![]() |
array of TImage ... length liefert einen ganz falschen Wert
mein problem ist folgendes:
Delphi-Quellcode:
was mach ich falsch?procedure image_test; var images : array of TImage; begin ShowMessage(IntToStr(length(images))); // Ausgabe 0 setLength(images,1); ShowMessage(IntToStr(length(images))); // Ausgabe 1 images[0] := TImage.create(Form1); ShowMessage(IntToStr(length(images))); // Ausgabe 9843080 end; bzw. was fehlt? |
Re: array of TImage ... length liefert einen ganz falschen W
Zunächst mal vorweg: Schau dir mal TList. Darin speicherst du normalerweise Objekt. Array würde ich nur für Integer, Strings, Boolean etc. nehmen, also keine Objekte.
Ich schau mir deinen Code allerdings mal an. [edit=Christian Seehase]Beitrag wieder sichtbar gemacht. Mfg, Christian Seehase[/edit] |
Re: array of TImage ... length liefert einen ganz falschen W
Eigentlich nichts, aber ich vermute eher, dass Delphi diese Anweisung rausoptimiert und dir eine entsprechende Meldung gegeben hat beim compilieren. Kann das sein?
@s.h.a.r.k.: Äh, was? |
Re: array of TImage ... length liefert einen ganz falschen W
@Muetze hast recht stimmt alles.
Bei mir Delphi2006 kommt 0,1,1 als Ergebniss,der Fehler liegt nicht an dem geposteten code |
Re: array of TImage ... length liefert einen ganz falschen W
:D ich hab einen Text verfasst und wenn ich ihn editiere, dann seh ich auch wieder meinen alten Text.
Hier mein Text nochmals Zitat:
[EDIT] *lol* nun gehts auf einmal und ich hab nicht mal ne andere Schriftfarbe als zuvor :D OT: Was passiert, wenn ihr meinen oben stehenden Beitrag quoted?! Erscheint bei euch dann auch meine eigentliche Nachricht? [/EDIT] |
Re: array of TImage ... length liefert einen ganz falschen W
[OT]
//Edit beim Quoten ist alles ok |
Re: array of TImage ... length liefert einen ganz falschen W
Zitat:
Zitat:
|
Re: array of TImage ... length liefert einen ganz falschen W
Zitat:
|
Re: array of TImage ... length liefert einen ganz falschen W
Delphi-Quellcode:
das ist der orginaltextprocedure 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; |
Re: array of TImage ... length liefert einen ganz falschen W
dort wo // text unwichtig steht wird mit length nochmal abgefragt
|
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:
- Wieso ermittelst du die Länge von Wunden um dann c auf diese Länge + 1 zu setzen?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; - 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). |
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 |
Re: array of TImage ... length liefert einen ganz falschen W
Zitat:
Zitat:
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). |
Re: array of TImage ... length liefert einen ganz falschen W
danke, habt mir sehr geholfen!
|
Re: array of TImage ... length liefert einen ganz falschen W
Zitat:
//Edit ok ich halt mich raus Muetze ist der bessere Delphin |
Re: array of TImage ... length liefert einen ganz falschen W
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 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