![]() |
AW: Unlösbares Problem?
Sagt mal, die Bereichsprüfung funktioniert auch bei dynamischen Arrays?
|
AW: Unlösbares Problem?
Diese arbeitet nur bei dynamischen Arrays. (String = aufgemotztes dyn. Array)
Bei statischen Arrays meldet sich der Compiler mit einer Fehlermeldung, egal ob die Bereichsprüfung an oder aus ist. (mit Ausnahme der [0..0], welche ohne Prüfung durchgeht) |
AW: Unlösbares Problem?
Delphi-Quellcode:
Zugegebenermaßen ist das etwas weit hergeholt, aber hier kommt gleich eine handfeste Zugriffsverletzung. Nicht, dass der code einen Sinn hätte, aber er zeigt zumindest in Delphi 7, dass die Bereichsprüfung erst nach dem Anlegen eines Feldes zu greifen scheint. Sobald Speicher dafür reserviert oder ein anderes Feld zugewiesen wurde, kommen range check - Fehler.
type
TTestArray = Array of Byte; PTestArray = ^TTestArray; procedure TForm1.Button1Click(Sender: TObject); var q : PTestArray; begin q^[10] := 1; end; |
AW: Unlösbares Problem?
Eien Dynamischer Array ist schon ein Zeiger
|
AW: Unlösbares Problem?
richtig, die zusätzliche Umschreibung war unnötig, aber auch mit dem direkten Zuweisen einer Zelle von einem nicht initialisierten array gibt es unmittelbar eine Zugriffsverletzung, da das Array dann bei Adresse 0x00000000 beginnt. Ebensogut könnte man TTestArray(nil) zuweisen, doch dann kommt der range check error - das ist, was mich stört.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:32 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