Ja also wie bereits gesagt wurde,
object ist veraltet und
sollte nicht mehr benutzt werden, was dich aber natürlich nicht abhält das trotzdem zu tun wenn du willst. Jedoch würde ich empfehlen einfach eine richtige Klasse draus zu machen, ist ja nicht kompliziert oder so ^^
Ich denke du kannst im Grunde genommen einfach das
object mit
class ersetzen.
Und ja du hast einen Konstruktor und Destruktor. In denen musst du erstmal die Objekte erstellen und schlussendlich diese auch wieder aus dem Speicher löschen.
Warum du da genau eine Zugriffsverletzung bekommst, weiss ich nicht liegt wohl an ner anderen Stelle im Code oder bin gerade zu müde um es zu sehen
Kann es vielleicht sein das der Destruktor falsch ist und/oder du das script Objekt vorher mal "free"'st? Kenne das von früher, dass ich ab und zu an falschen Stellen die Objekte aus dem Speicher entfernt habe und deswegen Zugriffsverletzungen auftraten.
Im Grunde genommen sollte deine TScript Klasse schlussendlich genau gleich bleiben ausser halt mit class-Eigenschaften:
Delphi-Quellcode:
TScript = class
private
...
public
...
constructor Create;
destructor Destroy; override;
end;
und dann könntest du ganz einfach für die Funktion Interpreter den Standardwert von inScript auf nil setzen und den dann bei der Funktion abfragen und entsprechend reagieren oder nen Overload setzen. Die erste Möglichkeit ist meiner Meinung nach einfacher zu verstehen, wäre dann etwa so:
function Interpreter(cmd:string; Modus:TModus; inScript:TScript = nil):TStatus; // Beachte das = nil hinter inScript:TScript welches angibt das inScript gleich nil ist wenn kein Argument übergeben wurde
Danach kannst du in der Funktion abfragen ob inScript gleich nil ist (also ob kein Argument übergeben wurde)
Freundliche Grüsse