![]() |
Zugriffsverletzung bei Kompilierung
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:
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:
Hier die Funktion getLog
{ 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;
Code:
Zuletzt die Prozedur writeLogEntry
function TAuto.getLog: TStringArray;
begin getLog := self.Log; end;
Code:
Ich hoffe mir kann jemand helfen,
procedure TAuto.writeLogEntry(msg:string);
var newKey: integer; begin newKey := High(self.Log); self.Log[newKey] := msg; end; Danke. |
Re: Zugriffsverletzung bei Kompilierung
Du musst bei dynamischen Arrays die Länge vorher mit Setlength() festlegen (repsektive damit das Array bei bedarf vergrößern).
mfG mirage228 |
Re: Zugriffsverletzung bei Kompilierung
Das heißt, dass ich im Konstruktor SetLength(0) schreibe und dann, in dem writeLogEntry jeweils das SetLength um 1 erhöhe ?
|
Re: Zugriffsverletzung bei Kompilierung
Zitat:
Was du aber noch verbessern könntest: 1.) Du könntest das Array immer in 5er (oder 6er oder wie auch immer) Schritten erhöhen (Du musst die Anzahl der Log-Einträge dazu aber manuell mitzählen, um dann wieder eröhen zu können) - das ist auf dauer Performanter 2.) Du verwendest statt einem dynamischen Array die Klasse ![]() mfG mirage228 |
Re: Zugriffsverletzung bei Kompilierung
Vielen Dank für deine Hilfe :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz