아래처럼 클래스를 구성하여보았습니다.
그런데 멤버에서 함수를 호출할때 에러가 나는 군요....
해결좀 해주시와요...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
class1 = class(TObject)
public
procedure CallOne(szString : string);
end;
class2 = class(TObject)
public
classOne : class1;
procedure CallTwo(szstring : string);
end;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
c2 : class2;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure class1.CallOne(szString : string);
begin
ShowMessage(szstring);
end;
procedure class2.CallTwo(szstring : string);
begin
classone.CallOne(szString);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
c2.CallTwo('이거 출력');
end;
end.
모든 객체는 사용하기 전에 반드시 생성을 해야 합니다. 아래서 보면
Class2.CallTwo메소드에서 ClassOne이라는 객체를 사용하시는데 어디에도 이 객체를
생성하는 코드는 없군요.
ClassOne : Class1.Create; 이런식으로 호출해서 ClassOne란 인스턴스를 생성하시고
다 쓴후에 ClassOne.Free이렇게 메모리에서 제거를 해주세요.
^^ 항상 즐코하세요.
이해원 wrote:
> 아래처럼 클래스를 구성하여보았습니다.
> 그런데 멤버에서 함수를 호출할때 에러가 나는 군요....
> 해결좀 해주시와요...
>
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls;
>
> type
> class1 = class(TObject)
> public
> procedure CallOne(szString : string);
> end;
>
> class2 = class(TObject)
> public
> classOne : class1;
> procedure CallTwo(szstring : string);
> end;
>
> TForm1 = class(TForm)
> Button1: TButton;
> procedure Button1Click(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> c2 : class2;
> end;
>
> var
> Form1: TForm1;
>
> implementation
>
> {$R *.DFM}
>
>
> procedure class1.CallOne(szString : string);
> begin
> ShowMessage(szstring);
> end;
>
> procedure class2.CallTwo(szstring : string);
> begin
> classone.CallOne(szString);
> end;
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> c2.CallTwo('이거 출력');
> end;
>
> end.
>