Q&A

  • 변수에 값이 할당되지 않는 이유는?
좀, 황당해서..

먼저 아래 소스좀 봐주시죠.



{Form1}



dbpath:String;



procedure TForm1.ShowTables;

begin

if not Assigned(Form2) then

Form2:= TForm2.Create(Self);

Form2.TableDir:= dbpath;

Form2.Show;

end;



procedure TForm1.O1click(Sender:TObject);

var

dbname:String;

begin

dbname:=''

Form3:= TForm3.Create(Self);

try

if Form3.ShowModal=mrOk then

dbname:= Form3.Choosedb;

finally

Form3.Free;

end;



if dbname='' then begin

{do something}

Exit;

end;



dbpath:= dbname;

ShowTables;

end;



{TForm2}

public

TableDir:String;



procedure TForm2.FormActivate(Sender:TObject);

begin

ShowMessage(Form1.dbpath);

ShowMessage(TableDir);

end;



procedure TForm2.FormClose(Sender:TObject);

begin

Action:= caFree;

Form2 := nil;

end;



문제는 Form2에서 Form1.dbpath와 TableDir의 값이 다르다는 것입니다. Form1.dbpath에는 제값이 나오고, Form2.TableDir에는 빈값이 나오더군요.

이런 일이 생긴다는게 이해하기 힘들어서요. 아시는분은 좀 알려주시길 부탁드립니다.



제환경은 델3, 윈도98입니다.



0  COMMENTS