AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verhalten von Array of Records

Ein Thema von MicMic · begonnen am 16. Nov 2019 · letzter Beitrag vom 22. Nov 2019
Antwort Antwort
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Verhalten von Array of Records

  Alt 16. Nov 2019, 13:48
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:
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;
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?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: Verhalten von Array of Records

  Alt 16. Nov 2019, 14:18
Schalte mal bei den Compiler-Optionen die Bereichsprüfung ein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Verhalten von Array of Records

  Alt 16. Nov 2019, 14:40
Schalte mal bei den Compiler-Optionen die Bereichsprüfung ein.
Habe ich eben gemacht (Projektoptionen / Compilieren / Laufzeitfehler > Bereichsprüfung auf True) bei Delphi 10.3
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.
  Mit Zitat antworten Zitat
ghubi01

Registriert seit: 18. Nov 2017
129 Beiträge
 
Delphi 12 Athens
 
#4

AW: Verhalten von Array of Records

  Alt 16. Nov 2019, 14:53
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.
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

AW: Verhalten von Array of Records

  Alt 16. Nov 2019, 14:57
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.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Verhalten von Array of Records

  Alt 22. Nov 2019, 10:24
"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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz