Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi array of TImage ... length liefert einen ganz falschen Wert (https://www.delphipraxis.net/111535-array-timage-length-liefert-einen-ganz-falschen-wert.html)

Muetze1 4. Apr 2008 22:58

Re: array of TImage ... length liefert einen ganz falschen W
 
Erstmal: Hast du die Bereichsprüfung eingeschaltet bei dem Projekt? Wenn nein, mach dies in den Projektoptionen->Compiler und erstelle das gesamte Projekt neu. Dann führe die Methode nochmal aus.

Zu deinem Code:
Delphi-Quellcode:

procedure c(anum, art : integer);
var
  anzahl : integer;
begin
  anzahl := length(a[anum].wunden);
  setLength(A[anum].c,anzahl + 1);
  A[anum].c[anzahl-1] := TImage.create(frmB);
  A[anum].c[anzahl-1].parent := frmB;

  // Text unwichtig

end;
- Wieso ermittelst du die Länge von Wunden um dann c auf diese Länge + 1 zu setzen?
- Eintrag Anzahl-1 ist nicht richtige Index, sondern Anzahl ist der letzte Index. Du hast ja auf Anzahl + 1 die Größe gesetzt.

Kleines Rechenbeispiel:
-> Anzahl wird mit 0 ermittelt
-> Du setzt c auf Anzahl + 1, also eine Länge von 1
-> Du greifst auf -1 zu, da du Anzahl - 1 nimmst

Mit der Bereichsprüfung hätte er dir das zur Laufzeit um die Ohren gehauen!

Du zerschiesst dir jetzt den Speicher, das kann unvorhersehbare Folgen haben, da du wild fremden Speicher editierst (fremd im Sinne der nicht eigentlich anvisierten Variablen).

faeX 4. Apr 2008 23:00

Re: array of TImage ... length liefert einen ganz falschen W
 
da gibt es ein problem:

mein delphi bockt wenn ich das programm direkt in delphi starten will ich muss es erst zur exe compilieren und dann starten

Muetze1 4. Apr 2008 23:03

Re: array of TImage ... length liefert einen ganz falschen W
 
Zitat:

Zitat von faeX
da gibt es ein problem:

Nein, das ist definitiv kein Problem:

Zitat:

Zitat von faeX
mein delphi bockt wenn ich das programm direkt in delphi starten will ich muss es erst zur exe compilieren und dann starten

Das ist eine Exception, die wird trotzdem erscheinen.

Und selbst wenn, du kannst den Prozess im Explorer starten und dann in Delphi zu dem Prozess attachen und debuggen. (Attach zu Prozess, bzw. Mit Prozeß verbinden).

faeX 4. Apr 2008 23:04

Re: array of TImage ... length liefert einen ganz falschen W
 
danke, habt mir sehr geholfen!

busybyte 4. Apr 2008 23:06

Re: array of TImage ... length liefert einen ganz falschen W
 
Zitat:

Zitat von faeX
da gibt es ein problem:

mein delphi bockt wenn ich das programm direkt in delphi starten will ich muss es erst zur exe compilieren und dann starten

Du machst mich neugierig auf Deine Delphiversion/Betriebssystem
//Edit
ok ich halt mich raus Muetze ist der bessere Delphin

Muetze1 4. Apr 2008 23:07

Re: array of TImage ... length liefert einen ganz falschen W
 
Zitat:

Zitat von faeX
danke, habt mir sehr geholfen!

Ist denn das Problem an sich erledigt?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:44 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