![]() |
Prozedur führt nicht alle Anweisungen aus
Guten Morgen.
Ich habe wieder einmal ein Problem, das ich mir nicht erklären kann: Auf meinem Formular befinden sich ein Panel, mehrere Buttons, eine GroupBox mit einer darin enthaltenen TextBox. Zur Laufzeit werden auf dem Panel eine Reihe Labels erzeugt; mit
Delphi-Quellcode:
wird allen Labels dieselbe Methode zugewiesen. Diese Methode zeigt ein mir unverständliches Verhalten.
Include(MyLabel.Click, Dummy_Click);
Delphi-Quellcode:
führt nur Anweisungen aus, die sich auf die Labels beziehen und lässt keinerlei Zugriff auf andere Komponenten zu.
procedure frmSpielplan.dummy_Click(sender: System.Object; e: System.EventArgs);
begin if not Status.Ispossible then begin for i := 0 to Panel1.Controls.Count - 1 do begin dosomething; end; end; end; Die Anweisung "Self.BackColor := System.Drawing.Color.Red;" wird nicht ausgeführt, egal ob sie nach dem "begin, vor dem "end" oder innerhalb einer der Schleifen steht. Die Anweisungen innerhalb der Schleife, die sich auf die Eigenschaften der Labels beziehen, werden aber korrekt ausgeführt. Ich bin ziemlich ratlos und hoffe, dass mir von Euch jemand weiterhelfen kann. Gruß Jürgen. |
Re: Prozedur führt nicht alle Anweisungen aus
Bist du sicher das der Code nicht ausgeführt wird oder gehst du nur davon aus, da dein gewünschtes Ergebnis nicht eintritt? Welchen Hintergrund willst du ändern?
|
Re: Prozedur führt nicht alle Anweisungen aus
Das "Self.BackColor := System.Drawing.Color.Red;" sollte nur zur Demonstration dienen, weil es sofort ins Auge stechen würde, wenn sich die Farbe des Formulars ändert.
Ich habe jetzt einmal die Prozedur wie folgt verändert:
Delphi-Quellcode:
In die beiden eingefügten Zeilen habe ich einen Haltepunkt gesetzt und bekomme folgende Meldungen in der Liste der überwachten Ausdrücke:
procedure frmSpielplan.dummy_Click(sender: System.Object; e: System.EventArgs);
begin if not Status.Ispossible then begin for i := 0 to Panel1.Controls.Count - 1 do begin dosomething; end; end; i := Anzahl; //<<<<< Self.Text := i.ToString; //<<<<< end;
Delphi-Quellcode:
Was mich daran besonders wundert ist die erste Meldung, da ich die entsprechende Zeile schon gelöscht habe.
System.Drawing.Color.Red [Prozess nicht verfügbar]
Anzahl.ToString [Prozess nicht verfügbar] Anzahl [Prozess nicht verfügbar] i.ToString [Prozess nicht verfügbar] Ich nehme an, die Meldungen sagen Dir mehr als mir?! Gruß Jürgen <Edit> Jetzt habe ich das Programm einmal nicht abgeborchen, sondern mit meinem "Schliessen"-Button geschlossen und siehe da: weitere Meldungen:
Delphi-Quellcode:
Anzahl ist eine globlae Variable. Self.Update habe ich nicht ausgeführt.
System.Drawing.Color.Red {24,18,8,0, Color&, 1,2,2,8,0,0,141,""}
Anzahl.ToString (comiler error); side effects not allowed Anzahl 1 i.ToString (compiler error); Expression systnax error Es wird immer mysteriöser: Nach dem Klick auf den "Schliessen"-Button hat sich das Programm nicht wie sonst immer beendet sondern stoppte in der Prozedur "BuSchliessen_Click" und die Zeile mit der Anweisung "Close" ist violett hinterlegt. Die beiden Zeilen mit den Haltepunkten sind verschwunden - warum weiß ich nicht. Das Programm bleibt jetzt bei jeder Ausführung bei "Close" stehen, die beiden Formulare sind weiß und enthalten keine Komponenten mehr. Das Programm muss über "Start/Programm abbrechen beendet werden. Ich bin ratlos! gruß Jürgen. |
Re: Prozedur führt nicht alle Anweisungen aus
Woher kommt Anzahl? (globale Variable)? Hast du mal Self.Update eingefügt?
|
Re: Prozedur führt nicht alle Anweisungen aus
"Prozess nicht verfügbar" kommt wenn der Prozess läuft und nicht an einem Haltepunkt steht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 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