ein wenig verwirrt bin ich schon.
Ich kann also einfach " = class" schreiben, also nicht zu verwechseln mit " = TClass".
milos sagt, ich müsse con- und destructor einsetzen - er bezieht sich auf class (ohne T).
bcvs sagt, ich benötige kein con/destructor - er bezieht sich auf TClass (mit T).
Ist das der Unterschied zwischen class und TClass?
Sorry für die Verwirrung. Ich meinte auch TObject, nicht TClass
type TScript = class ist das selbe wie
type TScript = class(TObject)
Ansonsten: ich habe gerade mal in einem alten TurboPascal-für-Windows-Code nachgeschaut. Das Object kannte doch auch schon Constructoren, nur hießen die da standardmäßig Init. Also hast du ja schon einen Constructor.
Warum und ob dein Init hier:
Delphi-Quellcode:
type TScript = object
private
line:word;
state:TStatus;
public
script:TStringList;
error:string;
function Init(scriptfile:string):boolean;
end;
als Constructor erkannt wird, weiß ich nicht. Ich würde es so machen:
Delphi-Quellcode:
type TScript = class
private
line:word;
state:TStatus;
public
script:TStringList;
error:string;
constructor Create;
destructor Destroy; override;
function Init(scriptfile:string):boolean;
end;
constructor TScript.Create;
// Hier nur die Stringlist erzeugen
begin
inherited Create;
script:=TStringList.Create;
end;
destructor TScript.Destroy;
// Hier wieder freigeben
begin
script.free;
inherited;
end;
function TScript.Init(scriptfile: string):boolean;
// Einlesen des Scriptfiles von der Erstellung der Klasse trennen
begin
result:=false;
if scriptfile<>'' then begin
if fileexists(scriptfile) then
script.LoadFromFile(scriptfile);
result:=script.count>3;
end;
end;
Aufruf dann so:
Delphi-Quellcode:
MyScript:=TScript.Create;
try
if MyScript.Init(MyScriptFile) then
MachWas;
finally
MyScrpit.Free;
end;