Cześć, napisałem taki kawałek kodu:
type
XStdObj = class(TObject)
protected
{ Protected declarations }
cloneList: TObjectList<XStdObj>;
private
{ Private declarations }
public
{ Public declarations }
constructor Create;
procedure AddToCloneList(handler: XStdObj); virtual;
end;
implementation
constructor XStdObj.Create;
begin
inherited;
Self.isClone := False;
Self.cloneList := TObjectList<XStdObj>.Create();
end;
procedure XStdObj.AddToCloneList(handler: XStdObj);
var text: PWideChar;
begin
cloneList.Add(handler);
StringToWideChar(cloneList.Count.ToString, text, 100);
MessageBox(0, text, 'Test', 0);
cloneList.Remove(handler);
StringToWideChar(cloneList.Count.ToString, text, 100);
MessageBox(0, text, 'Test', 0);;
end;
end.
A wywołuję go tak:
procedure TForm2.Button1Click(Sender: TObject);
var x, y: XStdObj;
begin
x := XStdObj.Create;
y := XStdObj.Create;
x.AddToCloneList(y);
end;
Po naciśnięciu przycisku, wyskakuje okienko z wartością jeden, a później błąd pamięci Access violation at address ...