Q&A

  • 학교 수업 중에 질문이 생겼는데...
implementaion
{$R *.DFM}
var
        anm : integer;
procedure TForm1.Timer1Time(Sender: TObject);
begin
        anm := anm+1;
        if anm = 5 then anm := 1;
        if anm = 1 then image1.Picture.loadfromfile('image1.bmp');
        if anm = 2 then image1.Picture.loadfromfile('image2.bmp');
        if anm = 3 then image1.Picture.loadfromfile('image3.bmp');
        if anm = 4 then image1.Picture.loadfromfile('image4.bmp');
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
        Timer1.Enabled := True;
end;

procedure TForm1.BitBtn2Click(Sender: Tobject);
begin
        Timer2.Enabled := False;
end;


이런 프로그램을 짰습니다... 그런데 이중에서

anm : integer; 이라는 변수를 왜 procedure위에 선언했나요?

그리고

anm := anm+1; 은

if anm = 5 then anm := 1;
if anm = 1 then image1.Picture.loadfromfile('image1.bmp');
if anm = 2 then image1.Picture.loadfromfile('image2.bmp');
if anm = 3 then image1.Picture.loadfromfile('image3.bmp');
if anm = 4 then image1.Picture.loadfromfile('image4.bmp');
이 아래 안쓰고 왜 위에 쓴거지요?

학교에서 수업을 듣는데 1학기에 이어서 한다고 하더군요....

그래서 전 잘모르거든요... 알려주시면 감사하겠습니다...
1  COMMENTS
  • Profile
    임형호 2002.08.27 06:20
    1번 질문에 대한 것은요. 전역변수와 지역변수의 차이입니다.
    간단히 말해서....
    올려주신 문장처럼 기술하면...  전역변수구요.
    procedure 과 begin 사이에 기술하면 지역변수가 됩니다.
    차이점은 지역변수는 해당 프로시저에서만 사용이 가능하구요.
    전역변수는 현재 unit 안에서 모두 사용이 가능하다는거죠.
    (음.. 쉽게 말해서 아래처럼 기술하면...
    procedure TForm1.BitBtn1Click(Sender: TObject);
    procedure TForm1.BitBtn2Click(Sender: TObject);
    procedure TForm1.Timer1Time(Sender: TObject);
    프로시저에서 모두 anm 변수를 사용할수 있구요.
    만약 그렇지 않으면... 해당 procedure 내에서만 사용이 가능합니다.
    )


    그리고... anm:=anm+1; 이라고 위에서 기술한것은.. 뭘 구현하느냐에 따라
    다른데... 아래소스에서는.. anm의 값의 범위는 1-4까지여야하는것 같은데요.

    아마도 Timer 컴포넌트의 Interval 이벤트에 설정된 시간이 경과될때마다 1씩 증가시켜서 그림을 바꾸는 프로그램 같네요. 그런데..만약 밑에다가 anm:=anm+1 을 기록하게 되면 처음 이벤트가 발생할때.. anm=0 (다른곳에서 특별히 코딩을 하지 않았다고 가정하구요.) 이 되므로 밑에 if문의 조건에 전혀 걸리지 않게되죠. 즉 image에 어떤 이미지파일도 연결하지 않게되니까..
    (위에서 말한대로 1-4까지에 걸려야되는데...안되니까..) 앞서서 기입한것 같습니다. 잘 모르신다고 해서 최대한 자세히 설명을 했는데..이해가 되셨느지 모르겠네요.   그럼 열심히 공부하세요.


    • 최수림
    • 2002.08.28 00:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.28 01:33
      hsr/////////////////////////////////////////////////////// EditCaption을 사용하시면 됩니다. proced...
    • Galaxy
      2002.09.03 19:15
      죄송합니다. 이렇게 늦게 답변을 드립니다. 제가 이야기 하는 답변은 정답이 아닐수 있습니다. 다만 참...
    • 이남호
    • 2002.08.27 22:09
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.08.28 02:39
      function SelectDBerrMsg(const NativeError : integer;const message : string):string; begin  &n...
    • 이남호
      2002.08.28 21:58
      답변 너무나 감사드립니다. 제가 너무 초보자라 사용법을 잘 모르거든요.. 저같은 경우는 다음처럼 로긴...
    • 김상수
    • 2002.08.27 21:34
    • 6 COMMENTS
    • /
    • 0 LIKES
    • Galaxy
      2002.08.27 23:47
      안녕하세요 수고 많습니다. 첨부한 그림처럼 원하는지요? ?????????????? 그럼 수고 하세요 비가 많이...
    • 김상수
      2002.08.27 23:54
      부산은 비 아직 안오는데요..^^; 답변 감사드리구요... 공백에 선은 제거 할 수는 없겠죠??? 첨부...
    • Galaxy
      2002.08.28 00:20
      안녕하세요 수고 많습니다. 님의 말씀대로 스트링 그리드에서는 라인을 제거 할수 없습니다. 그러나 들...
    • 김상수
      2002.08.28 00:47
      답변 감사드리구요... 전설의 콤포넌트 꼭 봤으면 좋겠네요..^^ 그럼 수고하세요..
    • 이추형
      2002.08.27 23:10
      원하는 경우에 맞추는 SQL문을 작성하여 사용합니다. 컴포넌트가 있다고 하더라도 TEMP 파일을 만들어 한...
    • 김상수
      2002.08.27 23:38
      다시 봐주세요
    • 김영호
    • 2002.08.27 20:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.08.27 20:44
      우선 백업모드가 아카이브모드로 되어 있어야 될것같기도 한데... http://www.oracle.com/kr/support/we...
    • 나옹이
    • 2002.08.27 20:30
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 델퐁
    • 2002.08.27 20:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 백화현
    • 2002.08.27 20:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.08.27 20:25
      너무 막연하네요...^^ TPrinter로 하시면 되는데... 아마 강의실에 양병규님이 올리신 자료보시고 해보...
    • byun
    • 2002.08.27 20:14
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.27 21:08
      hsr/////////////////////////////////////////////////////// 에러메세지를 써놓으셨다면 알수있겠지만.....
    • 이정용
    • 2002.08.27 19:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.27 21:20
      hsr///////////////////////////////////////////////////// 델파이 IDE의 설정 말씀하시나요? 델 버젼에...
    • 아폴론
    • 2002.08.27 19:46
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.08.27 19:55
      안녕하세요. 한원희입니다. 그냥, 해당 이벤트 핸들러의 매개변수만 제대로 맞춰주면 될것 같습니다. ...
    • 아폴론
      2002.08.28 00:26
      var Tkey : Word; begin    Tkey := vk_return;      Fm102.ac_srnoKey...
    • 아폴론
      2002.08.28 00:03
      허걱 그래도 에러가 나네요. 안되면 노가다 엄청 해야 되는데.... Fm102.ac_srnoKeyDown(Self, VK_RET...
    • 이광수
      2002.08.28 01:34
      procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState); 2번...
    • 홍남경
    • 2002.08.27 19:39
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.08.27 20:03
      안녕하세요. 한원희입니다. 이게 맞을런지 잘 모르겠지만, 아래와 같이 한번 해보세요. function Fil...
    • 홍남경
      2002.08.28 08:43
      한가지만 더요~~~ 정적인 DLL사용은 함수 사용후에 DLL이나 메모리를 반납을 해야 하나요? *** 프로그...
    • 한원희
      2002.08.30 21:25
      안녕하세요. 한원희입니다. 답변이 늦었습니다. ^^; 글쎄요. 정적으로 DLL을 호출하게 되면, 따로 DLL...
    • 홍성락
      2002.08.28 00:59
      hsr/////////////////////////////////////////////////////////// 전체를 팁에도 올려서 많은사람들이 손...
    • 이추형
      2002.08.28 02:09
      1. 엑셀에서 '다른 이름으로 저장' 2. 파일형식을 '텍스트(탭으로분리)(*.txt)' 선택 3. TEXT파일로 저...
    • KDDG_ZZOM
      2002.08.27 19:50
      파워빌더같은 툴을 이용하면 편한데...^^ 아니면 오라클 로더기능을 사용하세요... 사용법은 오라클책같은...
    • 김문식
      2002.08.28 19:07
      텍스트(탭으로 분리)서 저장할때 탭으로 분리 형식이 지원하지 않는 기능이 있습니다 라는 메시지가 뜹니...
    • 이원상
    • 2002.08.27 19:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.08.27 19:51
      안녕하세요. 한원희입니다. FillChar 프로시저를 사용하시면 될것 같습니다.
    • 조만수
    • 2002.08.27 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2002.08.27 06:20
      1번 질문에 대한 것은요. 전역변수와 지역변수의 차이입니다. 간단히 말해서.... 올려주신 문장처럼 기...
    • 나그네
    • 2002.08.27 05:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.27 05:47
      hsr///////////////////////////////////////////////// Chart1.Series[0].Clear; 것 처럼 생성된 각 Ser...