Einzelnen Beitrag anzeigen

bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#16

AW: optionale Parameter mit object-type?

  Alt 20. Mai 2016, 08:33
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;
  Mit Zitat antworten Zitat