Q&A

  • 각 프로시져에서 var 로 선언한 함수 사용하기 문제여..
안녕하세요....
어떠한 첫번째 프로시져 에서 var 로 함수 선언을 했습니다.
그런데 다른 프로시저에서 첫번째프로시져 에서 선언한 함수를
가져오려면 어떻게 해야 하나요?
제가 짠 소스는
// 첫번째 프로시저
procedure TFormSearch.ComboBoxChange(Sender: TObject);
var
andor:string;    // 바로 이함수 입니다...
begin
   case ComboBox.ItemIndex of
   0 : // 영화일 경우
     begin
        ComboBox1.Items.Clear;
        ComboBox1.Enabled := True;
        ComboBox1.Items.Add('SF');
                        :
        andor := ' MovieDB.db ';     // 0 일경우 MovieDB 파일 선택
     end;
   1 : // 프로그램/유틸일 경우
     begin
        ComboBox1.Items.Clear;
        ComboBox1.Enabled := True;
        ComboBox1.Items.Add('OS');
                        :
        andor := ' UtilDB.db ';         // 1 일경우 UtilDB 파일 선택
     end;
     end;  // case end
// 두번째 프로시저
procedure TFormSearch.ButtonNextClick(Sender: TObject);
var
sqlstr:string;
begin
     sqlstr := 'select * from' + andor + 'where Category='''+
               ComboBox1.Items[ComboBox1.ItemIndex]+
               ''' Order by Posision';
     QuerySearch.Close;
     QuerySearch.SQL.Clear;
     QuerySearch.SQL.Add(sqlstr);
     QuerySearch.Open;
end;
이렇게 했는데 안되더라구요
제 의도는 콤보박스의 선택에 의해서 DB 파일이 바뀌는 것인데....
그래서 두번째에도 andor:string; 을 해보니
andor에는 공백으로 들어가더라구여...
해결할 방법이 있을까여?
5  COMMENTS
  • Profile
    타락천사 2002.10.24 17:06
    안녕하세여. 타락임다..

    로컬변수를 다른 프로시저에서 읽을수 없습니다.

    전역변수를 선언해서 쓰세여.

    즐푸하세여..

    타락천사..

  • Profile
    홍성락 2002.10.24 03:50
    아래 소스를 보면 컴파일 되었다면
    두번째 함수에서 andor를 선언 안해도 되었다면 전역변수로도 선언이 되어 있는거 같습니다.
    그러면 첫번째 함수에서 같은 이름으로 또 선언하였으므로 첫번째함수는 우선순위로 지역변수를 먼저사용하게됩니다.
    따라서 첫번째함수에서 andor선언을 없애시면 될것같습니다.
    hsr/////////////////////////////////////
  • Profile
    머슴 2002.10.23 23:11
    procedure TFormSearch.ComboBoxChange(Sender: TObject);
    var
    andor:string;    // 바로 이함수 입니다...
    begin

    님과 같이  선언을 하시면... 지역변수로 선언이 됩니다...

    따라서 지역변수로 선언되면...procedure를 벗어나면..

    변수의 값이 없습니다..

    이것을  implementation절 위에 Private절이나 Var절에 선언을 하시면..

    될것 같습니다..




  • Profile
    송재진 2002.10.23 23:32
    역시나 같은 문제네요~
    andor 변수안에 데이터가 다 지워지네요...
    어케 방법이~~~~~
  • Profile
    곰다방~미스김 2002.10.23 23:46
    아마도 다른폼에서 참조하려고 하셨나보네요.....
    같은폼에서는 위와 같이 하면 되는데.....
    다른폼에서도 참조하려면......
    public에다가 선업하셔야 합니다......