AGB  ·  Datenschutz  ·  Impressum  







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

Probleme beim Debuggen

Ein Thema von Kurt Wallander · begonnen am 17. Mär 2022 · letzter Beitrag vom 23. Mär 2022
Antwort Antwort
Seite 1 von 2  1 2      
Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#1

Probleme beim Debuggen

  Alt 17. Mär 2022, 18:51
Hallo Delphianer,
ich habe beim Debuggen meiner eigenen Vcl-Programme folgende Probleme:
Problem : 1 Ich habe zwei Monitore und schiebe beim Debuggen das Fenster für die überwachten Variablen und das Fenst für die lokalen Variablen auf den 2. Monitor. Um das nicht jedesmal per Hand tun zu müssen, habe ich das Debug-Fenster über "Ansicht"-"Desktop"-"Debug-Desktop" automatisiert. Die Fenster sind jedoch eingefroren. Das Fenster für die lokalen Variablen muß ich nach jedem Übersetzunslauf per Hand killen und mit <Strg><Alt><L> jedesmal neu starten. Das Fenster für die überwachten Variablen zeigt nur statisch die Wertr der Variablen im Moment der Aufnahme in das Fenster für die überwachten Variablen an. Eine Änderung wird mir nur angezeigt wenn ich in der Checkbox, die im Fenster vor der Variablen steht, die Variable aus- und dann wieder einschalte. Das Ganze ist ziemlich nervig.
Problem 2: In einem anderen Programm schreibe ich direkt auf die Canvas der Form kurzen Text mit "Textout". nun entscheidet Windows (oder der liebe Gott), wann die Ausgabe auf dem Bildschirm erfolgt. Es wird offensichtlich erst ein Buffer gefüllt. Bei anderen Controls kann ich durch repaint, refresh oder invalidate eine sofortige Ausgabe erzwingen. Für Textout scheint dies aber nicht zu geben. Weiß jemand einen Trick?
Mit lieben Grüßen und heißem Dank
Kurt Wallander
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
681 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Probleme beim Debuggen

  Alt 18. Mär 2022, 06:49
Was spricht dagegen für die Textausgaben Label zu verwenden? Oder ein Memo (falls es nur für Debug ist)
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
251 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Probleme beim Debuggen

  Alt 18. Mär 2022, 08:01
Statt des TextOut kannst Du auch die API SendDebugMessage verwenden, die melung erscheint dann in der IDE.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#4

AW: Probleme beim Debuggen

  Alt 18. Mär 2022, 08:21
Das Verhalten in OnPaint und Textout ist bei mir auch komisch. Aber das ist auch bei DX10.4 so.

Wenn ich was neues per Canvas.Textout(...) ausgeben will reicht es nicht das in OnPaint zu machen.
Hat sich was geändert, muss Form.Invalidate oder Form.Paint aufgerufen werden. Dann wird OnPaint aufgerufen un die Ausgabe von Canvas.TextOut ist sofort sichtbar.

Ohne Invalidate/Paint wird der geänderter String im OnPaint nicht ausgegeben.
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
251 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Probleme beim Debuggen

  Alt 18. Mär 2022, 08:44
Die Ausgabe über GDI erfolgt manchmal verzögert.
Mit GdiFlush erzwingt man die sofortige Aushabe
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#6

AW: Probleme beim Debuggen

  Alt 18. Mär 2022, 09:18
Wann sollte den GdiFlush aufgerufen werden?
Nach dem Canvas.TextOut bewirkt das im OnPaint nichts.
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
251 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Probleme beim Debuggen

  Alt 18. Mär 2022, 12:04
Eigentlich funktioniert GdiFlush bei einer synchronen Ausgabe.
Im OnPaint ist es meines Erachtens überflüssig, denn hier bist Du in der Windows message loop. Die Frage ist auch, auf welche Canvas Du da gerade zeichnest. Die könnte auch gepuffert sein.

Kleiner Test:

Code:
var i : Integer;
begin
  for i := 0 to 100 do
  begin
    PaintBox1.Canvas.FillRect(Rect(0,0,PaintBox1.Width,PaintBox1.Height));
    PaintBox1.Canvas.TextOut(10,10, IntToStr(i));
    GdiFlush;
    Sleep(10);
  end;
end;
Probier mal mit und ohne GdiFlush.

Das geht auch ohne PaintBox

Code:
var i : Integer;
    dc : TControlCanvas;
begin
  dc := TControlCanvas.Create;
  dc.Control := Panel2;
  for i := 0 to 100 do
  begin
    dc.FillRect(Rect(0,0,100,100));
    dc.TextOut(10,10, IntToStr(i));
   // GdiFlush;
    Sleep(10);
  end;
  dc.Free;
end;
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.590 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Probleme beim Debuggen

  Alt 18. Mär 2022, 18:12
Bei anderen Controls kann ich durch repaint, refresh oder invalidate eine sofortige Ausgabe erzwingen. Für Textout scheint dies aber nicht zu geben.
Verwendest du denn auch OnPaint? Denn alles, was du außerhalb dessen auf das Formular schreibst, kann auch sofort wieder überzeichnet werden.
Korrekt wäre:
Deinen Buffer aktualisieren, Invalidate aufrufen, im OnPaint deinen Buffer auf das Canvas des Formulars oder der Paintbox zeichnen.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#9

AW: Probleme beim Debuggen

  Alt 19. Mär 2022, 09:46
Statt des TextOut kannst Du auch die API SendDebugMessage verwenden, die melung erscheint dann in der IDE.
Alternativ: OutputDebugString...
...oder CodeSite benutzen, die Lite Version reicht für die meisten Dinge und ist gratis in GetIt zu finden...
  Mit Zitat antworten Zitat
Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Probleme beim Debuggen

  Alt 20. Mär 2022, 15:32
Hallo Leute,
vielen Dank für die zahlreichen Zuschriften. Sie betreffen alle mein Problem 2. Aber z. Z. sitzt mir mein Problem 1 mehr im Nacken, so daß ich mich etwa später zur Lösung des Problems 2 äußern werde. Also ein klein wenig Geduld.
Die Verteilung des Zuschriften verrät mir, daß nur wenige mit mehreren Bildschirmen arbeiten.
Ein schönes Restwochenende wünscht
Kurt Wallander
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 01:55 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