AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur führt nicht alle Anweisungen aus

Ein Thema von gfjs · begonnen am 5. Sep 2006 · letzter Beitrag vom 5. Sep 2006
Antwort Antwort
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#1

Prozedur führt nicht alle Anweisungen aus

  Alt 5. Sep 2006, 07:07
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 Include(MyLabel.Click, Dummy_Click); wird allen Labels dieselbe Methode zugewiesen. Diese Methode zeigt ein mir unverständliches Verhalten.
Delphi-Quellcode:
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;
führt nur Anweisungen aus, die sich auf die Labels beziehen und lässt keinerlei Zugriff auf andere Komponenten zu.

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.
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Prozedur führt nicht alle Anweisungen aus

  Alt 5. Sep 2006, 07:43
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?
Markus Kinzler
  Mit Zitat antworten Zitat
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Prozedur führt nicht alle Anweisungen aus

  Alt 5. Sep 2006, 08:31
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:
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;
In die beiden eingefügten Zeilen habe ich einen Haltepunkt gesetzt und bekomme folgende Meldungen in der Liste der überwachten Ausdrücke:

Delphi-Quellcode:
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]
Was mich daran besonders wundert ist die erste Meldung, da ich die entsprechende Zeile schon gelöscht habe.

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:
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
Anzahl ist eine globlae Variable. Self.Update habe ich nicht ausgeführt.

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.
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Prozedur führt nicht alle Anweisungen aus

  Alt 5. Sep 2006, 08:37
Woher kommt Anzahl? (globale Variable)? Hast du mal Self.Update eingefügt?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Prozedur führt nicht alle Anweisungen aus

  Alt 5. Sep 2006, 08:45
"Prozess nicht verfügbar" kommt wenn der Prozess läuft und nicht an einem Haltepunkt steht.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz