![]() |
Verhalten von Array of Records
Hallo,
ich teste gerade ein wenig rum und versteh mal wieder Bahnhof :) :) Hier mal abgekürzt (in meinem Record ist noch mehr drin).
Delphi-Quellcode:
Gerade hier gibt mir "test[4281]" eine Nummer (132272) raus. Wobei eigentlich doch "fehler" ausgegeben werden sollte. Erhöhe ich die Zahl (6stellig) bekomme ich "fehler", sonst bei vielen anderen Zahlen meist "0" zurück geliefert. Sollte aber nicht ab "test[2] immer "fehler" ausgegeben werden?
TTestRecord = Record
Nr : Integer; ONr : Integer; End; TestList = Array of TTestRecord; Var Test : TestList; Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var f : integer; begin setLength(test,2); test[0].Nr := 3; test[1].Nr := 3; try f:= test[4281].Nr; caption := inttostr(f); except caption := 'fehler'; end; end; procedure TForm1.FormDestroy(Sender: TObject); begin finalize(test); end; |
AW: Verhalten von Array of Records
Schalte mal bei den Compiler-Optionen die Bereichsprüfung ein.
|
AW: Verhalten von Array of Records
Zitat:
Aber es ändert sich nichts. Nur mal als Beispiel: Prüfe ich auf "f:= test[428100].Nr" dann bekomme ich "fehler" ausgespuckt oder wenn ich es mit Debug starte, dann einen Dialog mit Klasse ERageError mit der Meldung "Fehler bei Bereichsprüfung". Die bekomme ich aber auch, wenn ich die Bereichsprüfung auf False habe (also in Projektoptionen / Compilieren / Laufzeitfehler). Bei kleineren Werten: f:= test[40].Nr (Ergebnis 5) f:= test[41].Nr (Ergebnis 7143538) f:= test[200].Nr (Ergebnis 0) f:= test[310].Nr (Ergebnis 0) Nach meinem Verständnis sollte ab "f:= test[2].Nr" eigentlich immer "fehler" ausgegeben werden bzw. mit Debug immer so ein ERageError Dialog kommen. |
AW: Verhalten von Array of Records
Hallo,
Du musst nach jedem Umschalten der Bereichsprüfung (True/False) das Projekt erzeugen oder eine Syntaxprüfung durchführen. Nur dann ist die Bereichsprüfung auch wirksam. |
AW: Verhalten von Array of Records
Ja, eben mal etwas rumgetestet. Also auf 32 zu 64 Bit gewechselt. Dann hat es funktioniert. Zurück auf 32 Bit. Dann hat es auch funktioniert, da Delphi wohl dadurch das Projekt neu gemacht hat, also dein Tipp dann angewendet wurde. :) Danke für die Info.
|
AW: Verhalten von Array of Records
"Projekt compilieren" lässt ggf. Units aus, wenn keine Veränderungen darin erkannt werden.
"Projekt erzeugen" sollte immer funktionieren. Dies erzwingt eine Neucompilierung aller Units. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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