Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unlösbares Problem? (https://www.delphipraxis.net/154303-unloesbares-problem.html)

alzaimar 5. Sep 2010 20:42

AW: Unlösbares Problem?
 
Sagt mal, die Bereichsprüfung funktioniert auch bei dynamischen Arrays?

himitsu 5. Sep 2010 22:07

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)

hboy 6. Sep 2010 09:36

AW: Unlösbares Problem?
 
Delphi-Quellcode:
type
  TTestArray = Array of Byte;
  PTestArray = ^TTestArray;

procedure TForm1.Button1Click(Sender: TObject);
var
  q : PTestArray;
begin
  q^[10] := 1;
end;
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.

mkinzler 6. Sep 2010 09:53

AW: Unlösbares Problem?
 
Eien Dynamischer Array ist schon ein Zeiger

hboy 6. Sep 2010 22:57

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.
Seite 2 von 2     12   

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