Hallo Community.
Ich stehe gerade vor einem eigenartigen Problem und ich hoffe, dass ihr mir dabi weiterhelfen könnt.
Ich schreibe gerade ein Übungsprogramm für die Schule, wo
OOP nähergebracht wird, an Beispiel eines Autos.
Alles klappt wunderbar, nun möchte ich ein Attribut "Log" füllen und da hängt es bei mir.
Ich werde die Codeschnipsel anhängen, jedoch werde ich das Problem beschreiben, bevor ich das mache.
Ich möchte in Prozeduren (auch im Konstruktor) auf eine Prozedur zugreifen, die mir einen Logeintrag erstellt.
Wenn ich dies mache, erhalte ich die Fehlermeldung
Zitat:
Zugriffsverletzung bei Addresse 00403F38 in Modul 'Auto.exe'. Schreiben von Addresse FFFFFFFC.
Ich nehme an, dass irgendwo ein Zugriff nicht erlaubt ist, obwohl mir das sehr eigenartig erscheint, da die Prozedur public ist.
Naja, ohne Code lässt sich nur herumraten, daher folgen hier die Codeschnipsel.
Das Programm besteht aus dem Formular und einer zusätzlichen
Unit (uTAuto), welches die Autoklasse beinhaltet.
Hier sind also die Codeschnipsel (Ich habe das, was nicht zu dem Problem gehört, weggelassen):
Hier die Deklarationen
Code:
{ Define the type for returning arrays }
type TStringArray = array of string;
type TAuto = class
private
Log: TStringArray;
public
function getLog: TStringArray;
procedure writeLogEntry(msg:string);
end;
Hier die Funktion getLog
Code:
function TAuto.getLog: TStringArray;
begin
getLog := self.Log;
end;
Zuletzt die Prozedur writeLogEntry
Code:
procedure TAuto.writeLogEntry(msg:string);
var newKey: integer;
begin
newKey := High(self.Log);
self.Log[newKey] := msg;
end;
Ich hoffe mir kann jemand helfen,
Danke.