Ereigniss zur Laufzeitumgebung hinzufügen

Für Fragen von Einsteigern und Programmieranfängern...
MAC
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

Beitrag von MAC »

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...

Code: Alles auswählen

Signatur := nil;

mse
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

Beitrag von mse »

MAC hat geschrieben:@mse:
1.Breakpoint gesetzt
2.kamm genau die selbe Fehlermeldung.

??? 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.
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

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?
Was ich jetztt gemacht habe ist bei MouseMove:
Form1.Caption:= 'bild' + InttoStr(vnr) + ' ' + (Sender as TImage).Name;
so dann steht dort "bild1 bild1"

Dann hat der owner von bild1 geändert (Plutos Vermutung)?
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));

ErschaffeNeu ist keine Methode und trotzdem wird self als owner bei timage.create verwendet? Kompiliert das überhaupt?
Aha, nun sehe ich es, Self ist eine nicht initialisiert Lokale Variable!

Code: Alles auswählen

Bild := (TImage.Create(Form1));

müsste es heissen.

Martin

MAC
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

Beitrag von MAC »

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) :mrgreen:
Vielen Dank mse.

Code: Alles auswählen

Signatur := nil;

mse
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

Beitrag von mse »

MAC hat geschrieben:Und das reicht mir

So leicht kommst du nicht davon. ;-)
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.

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: Ereigniss zur Laufzeitumgebung hinzufügen

Beitrag von theo »

MAC hat geschrieben:hat hier aber nicht komplimiert...,


Dieses Wort ist mir unbekannt. Meinst du "kompiliert" ?
http://de.wikipedia.org/wiki/Kompilierung

creed steiger
Beiträge: 957
Registriert: Mo 11. Sep 2006, 22:56

Re: Ereigniss zur Laufzeitumgebung hinzufügen

Beitrag von creed steiger »

theo hat geschrieben:
MAC hat geschrieben:hat hier aber nicht komplimiert...,


Dieses Wort ist mir unbekannt. Meinst du "kompiliert" ?
http://de.wikipedia.org/wiki/Kompilierung


Wenn das kompilieren kompliziert wird,heisst es halt komplimiert ;)

MAC
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

Beitrag von MAC »

creed, du sagst es.

du sagst "die Werte der Variablen zu kontrollieren" . D.h. man kann damit die Variablen ablesen ? Wie ?

mse
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

Beitrag von mse »

MAC hat geschrieben:du sagst "die Werte der Variablen zu kontrollieren" . D.h. man kann damit die Variablen ablesen ? Wie ?

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
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

Beitrag von MAC »

stimmt du hast recht, ist mir noch gar nicht aufgefallen :)

Danke

Code: Alles auswählen

Signatur := nil;

Antworten