Ereigniss zur Laufzeitumgebung hinzufügen
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Ereigniss zur Laufzeitumgebung hinzufügen
also da bei dem erstellen parent := Form1; steht hoff ich mal die sind auf Form1
Das heißt ich soll einfach jetzt ein
var abc : array [0..100000] of TImage machen ?
wieso bin ich da nicht früher drauf gekommen...
Danke
Achja, by the way. Wie macht man überhaupt variable arrays, also welche die nicht von anfang an 0..100000 gibt sondern die erst, wenn sie benötigt werden gesetzt werden ?
Ich hab mal was von einer Methode in Delhi gelesen, aber was hat irgendwie nicht geklappt...
Das heißt ich soll einfach jetzt ein
var abc : array [0..100000] of TImage machen ?
wieso bin ich da nicht früher drauf gekommen...
Danke
Achja, by the way. Wie macht man überhaupt variable arrays, also welche die nicht von anfang an 0..100000 gibt sondern die erst, wenn sie benötigt werden gesetzt werden ?
Ich hab mal was von einer Methode in Delhi gelesen, aber was hat irgendwie nicht geklappt...
Code: Alles auswählen
Signatur := nil;
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Ereigniss zur Laufzeitumgebung hinzufügen
??? Bevor das Programm beim Breakpoint stoppte? Probiere doch mal ob Breakpoints überhaupt funktionieren, setze einen Breakpoint in einen Programmbereich der bestimmt vor der Exception ausgeführt wird.MAC hat geschrieben:@mse:
1.Breakpoint gesetzt
2.kamm genau die selbe Fehlermeldung.
Nein, die exception message, die fehlerhafte Adresse wird allerdings nicht immer angegeben. Das fragliche Register ist %eax, was zeigt das CPU-Fenster für eax? Vermutlich 00000000?3.Speicheradresse? Ich nehme mal an du meinst damit den Assembler ? Der hat sich beim 4.ten versuch geöffnen 0041F913 8b9030010000 mov 0x130 (%eax) , %edx
Dann hat der owner von bild1 geändert (Plutos Vermutung)?Was ich jetztt gemacht habe ist bei MouseMove:
Form1.Caption:= 'bild' + InttoStr(vnr) + ' ' + (Sender as TImage).Name;
so dann steht dort "bild1 bild1"
Ist der Inhaber der FindImage Methode auch owner von bild1?
Was zeigt inttohex(ptruint(sender.as timage).owner))?
Was zeigt (sender as timage).owner.name?
Wenn ich die errschaffeNeu funktion anschaue kann etwas nicht stimmen:
Code: Alles auswählen
function erschaffeNeu:integer;
var
Bild: TImage;
aText: TLabel;
Idx:String;
Self:TComponent;
begin
inc(anzahlnr);
Idx := InttoStr(anzahlnr);
Bild := (TImage.Create(Self));
Aha, nun sehe ich es, Self ist eine nicht initialisiert Lokale Variable!
Code: Alles auswählen
Bild := (TImage.Create(Form1));
Martin
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Ereigniss zur Laufzeitumgebung hinzufügen
Breakpoints funktionieren, ich komm in den Quelleditor. Nichts erscheint und drücke weiter auf den günen pfeil, dann kommt der normale error...
Cpu Fentser, keine ahnung.
Aber was ich auch viel wichtiger finde, ist self. Ich hatte den Code aus nem anderen Programm von mir übernommen, dort kam self vor , hat hier aber nicht komplimiert..., ich hab mich erinnert das es mit vielem anderen nicht geklappt hatte und habe self in var geschrieben.
Naja jetzt klappt es aufjedenfall . Und das reicht mir(Du must dir also keine Mühe machen und mir das CPU fenster erklären)
Vielen Dank mse.
Cpu Fentser, keine ahnung.
Aber was ich auch viel wichtiger finde, ist self. Ich hatte den Code aus nem anderen Programm von mir übernommen, dort kam self vor , hat hier aber nicht komplimiert..., ich hab mich erinnert das es mit vielem anderen nicht geklappt hatte und habe self in var geschrieben.
Naja jetzt klappt es aufjedenfall . Und das reicht mir(Du must dir also keine Mühe machen und mir das CPU fenster erklären)

Vielen Dank mse.
Code: Alles auswählen
Signatur := nil;
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Ereigniss zur Laufzeitumgebung hinzufügen
So leicht kommst du nicht davon.MAC hat geschrieben:Und das reicht mir

Die Idee der Breakpoints ist, das Programm kurz vor dem Auftreten eines Fehlers anzuhalten, die Werte der Variablen zu kontrollieren und das Programm Schritt für Schritt mittels F7/F8 abzuarbeiten um das Geschehen hautnah miterleben und verstehen zu können. Sobald man weiss was passiert, ist die Behebung des Fehlers meist kein Problem mehr.
Auch bei scheinbar funktionierenden Programmen lohnt sich die Verwendung von Breakpoints und Stepping. Man wird immer wieder davon überrascht, dass selbstgeschriebener Code ganz anders funktioniert als vorgesehen.

Martin
Zuletzt geändert von mse am So 8. Nov 2009, 11:49, insgesamt 1-mal geändert.
Re: Ereigniss zur Laufzeitumgebung hinzufügen
Dieses Wort ist mir unbekannt. Meinst du "kompiliert" ?MAC hat geschrieben: hat hier aber nicht komplimiert...,
http://de.wikipedia.org/wiki/Kompilierung" onclick="window.open(this.href);return false;
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: Ereigniss zur Laufzeitumgebung hinzufügen
Wenn das kompilieren kompliziert wird,heisst es halt komplimierttheo hat geschrieben:Dieses Wort ist mir unbekannt. Meinst du "kompiliert" ?MAC hat geschrieben: hat hier aber nicht komplimiert...,
http://de.wikipedia.org/wiki/Kompilierung" onclick="window.open(this.href);return false;

-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Ereigniss zur Laufzeitumgebung hinzufügen
creed, du sagst es.
du sagst "die Werte der Variablen zu kontrollieren" . D.h. man kann damit die Variablen ablesen ? Wie ?
du sagst "die Werte der Variablen zu kontrollieren" . D.h. man kann damit die Variablen ablesen ? Wie ?
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Ereigniss zur Laufzeitumgebung hinzufügen
Mit Lazarus kenne ich mich nicht aus, es gibt bestimmt ein "Watch"-Fenster oder so. Beim Platzieren des Mauszeigers über einer interessierenden Stelle im Quellcode sollte ein Hinweisfenster mit dem Inhalt der entsprechenden Variable erscheinen, auf jeden Fall funktioniert es in anderen IDE's so. Lazarus-Spezialisten können uns gewiss mehr darüber berichten, vielleicht gibt es sogar ein Wiki Thema darüber?MAC hat geschrieben: du sagst "die Werte der Variablen zu kontrollieren" . D.h. man kann damit die Variablen ablesen ? Wie ?
-
- Beiträge: 770
- Registriert: Sa 21. Feb 2009, 13:46
- OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
- CPU-Target: 32Bit
Re: Ereigniss zur Laufzeitumgebung hinzufügen
stimmt du hast recht, ist mir noch gar nicht aufgefallen 
Danke

Danke
Code: Alles auswählen
Signatur := nil;