Q&A

  • 아주기초적인 문제 해결좀해주사와요
델파이을 처음하는 사람입니다.
문제는 책에 예제를 보고 하는데....
변수를 선언하고 그것을 이용 카운터를 만들고자 합니다.
그런데...
컴파일시키면 선언된부분은 실행이 되지 않고 넘어갑니다.
어디가 틀린건지 잘 모르겠네요
procedure TForm1.Image1Click(Sender: TObject);
var s:integer;<- s을 int로 추가했는데...
begin
s:=0 ;           <-이놈은 인식을 하는데
if s=0 then
begin
  s:=1 ;           <-이놈은 건너뛰더라구요
  Image1.width:=110;
  Image1.height:=110;
end
else
begin
  s:=0;            <-이놈도 건너뛰더라구요
  image1.Width:=300;
  image1.Height:=300;
end
end;

end.
그리고 밑에 힌트나오는곳에는
[Hint] Unit1.pas(72): Value assigned to 's' never used 라고 나오는군요
어떻게 해야 하나요....
베이직하고 이건 넘 틀리네요...흐흑흑
알려주세요
3  COMMENTS
  • Profile
    정경철 2003.08.30 20:50
    현제 소스를 보면 그림의 크기가 300이면 110으로 그렇지 않으면 300으로
    변경 하는것 같은데... 맞을련지 모르겠습니다.

    이 소스를 보면 's' 가 Local 변수 입니다.
    그러니 그림의 크기가 항상 110 이죠..
    소스상에서는 문제가 없습니다. 그렇죠?
    그리고 's'에 1를 넣고 끝나면 변수가 사라지고...
    아마 컴파일러가 's'에 대하여 계속 같이
    할당 되니까 ... 메시지가 나오는것 같습니다.

    제가 알고 있는 알고리즘맞다면 다음과 같이 해보십시오.

    if image1.Width = 300 then
    begin
       Image1.width:=110;
       Image1.height:=110;
    end elsebegin
      image1.Width:=300;
      image1.Height:=300;
    end;

    이렇게 하면 그림의 크기는 계속 변하므로 이상없죠.

    's'를 어떤 값으로 넣고 싶으면 전역변수 처리를하십시오.
    델파이 Unit 선언부에 보면 Public 있죠...

    아님 객체로 선언해서 다른 폼에서도 변수에 넣고 싶으면

    var
      Form1: TForm1;
      s: integer;

    이렇게 하는것도 방법입니다...
    전역변수처럼 사용하는법은 여러가지가 있습니다.
    위에 있는것은 참고 하십시오.

    ^^!  .. 제가 제대로 설명 했는지 모르겠습니다.

    즐프되세요..



  • Profile
    김철홍 2003.08.30 19:44
    var
      Form1: TForm1;
      S : integer;   // S라는 Integer변수를 이곳에 선언하세요.

    implementation

    그리고  S:= 0 이라는 변수 초기화부분은 FormCreate에 넣으시면 될것 같네요
    (꼭 Create시 넣지 않아도 된답니다., FormActive나, FormShow에다 넣어도 되니까, 필요하신부분에 넣으세요)

    procedure TForm1.FormCreate(Sender: TObject);
    begin
        s:=0 ;
    end;

    이렇게 하시면 그런대로 될거 같네요.


  • Profile
    major 2003.08.30 20:04

    안녕하세요... 근데 이건 좀 이해가 안 가네요...혹시 F7로 Step으로 넘어가는게 맞나요?
    글구 이거 안 되시면 필드올로 함 해 보시면 좋을 것 같네요..

    제가 생각하기에는 전역변수로 잡는다고 되고 Procedure변수로 잡는다고 안 되는 건 아닐 것 같아요.. 그러니까 천천히 Break Point를 걸고 하나씩 따라 가 보시면 좋을 것 같네요.. 혹시 s라는 변수가 전역변수로 이미 사용 되었을지도 모르니 위에도 한번 확인을 해 보세요.. 걍 이 변수 s를 다른 i, j 등으로 바꾸어 서 함 해보셨으면 하네요...
    글구 never used라는 말 뜻은 s라는 변수를 잡아 놓고 다른 곳에 사용하는 곳이 없다는 말 뜻이에요.. 그러니까 s값을 다른 곳에 대입을 시켜보세염..

    그럼 Hint가 없어 질 꺼에요..

    그럼 즐프 하세염...