AGB  ·  Datenschutz  ·  Impressum  







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

Trotz Einzelschritt aktualisieren

Ein Thema von Nalincah · begonnen am 1. Dez 2003 · letzter Beitrag vom 2. Dez 2003
Antwort Antwort
Benutzerbild von Nalincah
Nalincah

Registriert seit: 18. Jul 2003
898 Beiträge
 
Delphi 6 Professional
 
#1

Trotz Einzelschritt aktualisieren

  Alt 1. Dez 2003, 15:37
Wie kann ich im Einzelschritt das aktuelle Projekt aktualisieren? Also das nach jedem Einzelschritt die Form aktualisiert wird??? Bei mir macht der das nur nachdem der mit einer Prozedur fertig ist, oder wenn ich

Application.ProcessMessages schreibe
Sebastian
Ehemals bekannt als General2004
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Trotz Einzelschritt aktualisieren

  Alt 1. Dez 2003, 16:00
Gar nicht. Um Dein Form neu zu zeichnen, müsste ja dessen Code ausgeführt werden. Aber genau das willst Du ja nicht, Du bist ja im Einzelschrittmodus.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#3

Re: Trotz Einzelschritt aktualisieren

  Alt 1. Dez 2003, 16:04
Bin mir nicht sichr aber gibt es nicht sowas wie ein Form.update?
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Trotz Einzelschritt aktualisieren

  Alt 2. Dez 2003, 13:01
Hallo Flogo,

mit TWinControl.Update kannst Du tatsächlich den Inhalt eines Controls neuzeichnen lassen, ohne die anstehenden Nachrichten verarbeiten zu lassen (TApplication.ProcessMessages).

Du konntest nun hinter jeweils einer Zeile im Code einen entsprechenden Aufruf machen
Delphi-Quellcode:
Label1.Caption:= 'a caption';
Update;
Label1.Caption:= 'another caption';
Update;
Nach dem "Überschreiten" eines Aufrufs von Update würde dann auch im Einzelschrittmodus das Fenster neugezeichnet werden. Dieses Vorgehen hat den Haken, dass Du Deinen tatsächlichen Code veränderst und diese Änderung nach dem Debuggen rückgängig machen solltest...

Stattdessen kannst Du einen Debugger-Trick anwenden: Mit <Strg>+<F5> kannst Du Ausdrücke überwachen lassen, also zB Label1.Caption. Dieser Ausdruck wird dann nach jeder Programmzeile ausgewertet und angezeigt. Über einfache Variablen/Referenzen und Properties hinaus hat man jedoch auch die Möglichkeit, Funktionsergebnisse abzufragen, zB Abs(3-StrToInt(Label1.Caption)). Hierzu muss man lediglich den Haken "Funktionsaufrufe gestatten" zu dem überwachten Ausdruck setzen.
Der Trick besteht nun darin, den Rückgabewert von Self.Update auswerten zu lassen. Zwar wird als Ergebnis angezeigt: "(kein Wert)", tatsächlich wird die Methode aber nach jedem Programmschritt aufgerufen, was den besagten Nebeneffekt hat, dass das Fenster (Self) neugezeichnet wird.

Diese Technik kann auch prima verwendet werden, wenn man sich in Endlosschleifen der Form
Delphi-Quellcode:
while not myResultSet.EOF do
begin
  SomeAction(myResultSet);
  //forgotten to call myResultSet.Next;
end;
"sauber" zu beenden, indem man den Ausdruck myResultSet.Last "überwacht"
gruß, choose
  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 23:16 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