Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hat schon mal jemand mit DateTime-Werten debuggt? (https://www.delphipraxis.net/70966-hat-schon-mal-jemand-mit-datetime-werten-debuggt.html)

sir-archimedes 7. Jun 2006 13:40


Hat schon mal jemand mit DateTime-Werten debuggt?
 
Au mann, ich habe gerade die frustrierendste Erfahrung überhaupt mit Delphi gemacht...

Ich arbeite seit längerem fast ausschließlich mit Visual Studio/C# - musste jedoch gerade an ein älteres Projekt, das ich mit Delphi geschrieben habe, heran. Dort habe ich versucht einen Fehler zu finden, wobei die Variablen, die ich mir ansehen wollte, DateTime-Variablen waren. Diese wurde als Float-Werte dargestellt. Ich dachte, kein Problem - wandele ich sie mir via DateTimeToStr/DateToStr in lesbare Strings um. Das jedoch ging nicht, da der Linker diese Methoden wegoptimiert hatte. Auch ein ausschalten der Optimierung, brachte nichts - damit konnte ich dann jedes Mal diese Kommazahlen in Datumswerte von Hand umrechnen...

Falls mir das noch einmal bevorsteht: Hatte ich da nur etwas falsch eingestellt?

Gruß,
Dominik

SirThornberry 7. Jun 2006 13:43

Re: Hat schon mal jemand mit DateTime-Werten debuggt?
 
wie du schon sagtest ist die Optimierung schuld. Binde einfach an einer beliebigen Stelle die Funktion ein damit diese nicht weg optimiert wird. (zum beispiel im Create: DateToStr(now()) )

Sidorion 7. Jun 2006 13:46

Re: Hat schon mal jemand mit DateTime-Werten debuggt?
 
Die Float-Darstellung wöhlt der Debugger, wenn auch nur der leiseste Verdacht besteht, das diese Variable evtl. doch kein DateTime ist. Dies geschieht z.b.: wenn Du einen Tag dazuaddierst (MyDateTime:=MyDateTime+1). Wenn Du immer strikt mit TDateTime arbeitest, sollte der ToolTip auch eine richtige Stringdarstellung wählen.
Untersuch doch mal deinen Code nach solchen Stellen. Etwa auch eine zwischenzeitliche Speicherung in nem double.

sir-archimedes 7. Jun 2006 13:54

Re: Hat schon mal jemand mit DateTime-Werten debuggt?
 
Jepp, ich rechne mit den Werten. Ich finde Delphis Verhalten trotzdem furchtbar. Auch habe ich eigentlich keine Lust, Methoden einzubinden, nur damit sie beim Debuggen aufrufbar sind. Ich bin da halt mittlerweile etwas verwöhnt, von C#, da dort DateTime einfach als Objekt angesehen wird und man damit auch beim Debuggen auf alle Methoden/Properties zugreifen kann.

Aber trotzdem danke für die Tipps - werde ich ausprobieren, sobald ich das nächste Mal an dem Projekt arbeite :-)

Gruber_Hans_12345 7. Jun 2006 13:56

Re: Hat schon mal jemand mit DateTime-Werten debuggt?
 
wozu gibt es in delphi das schöne "Add Watch" ?

und dort einfach DateTimeToStr(Value) oder FormatDateTime('dd.mm.yyyy hh:mm', Value) eingeben (und das Häkchen bei "Allow Function Call" nicht vergessen)

himitsu 7. Jun 2006 14:02

Re: Hat schon mal jemand mit DateTime-Werten debuggt?
 
Hast du DateTimeToStr/DateToStr überhaupt im Programm verwendet?
Denn ob der Code dafür im Programm ist, hängt davon ab, ob er benötigt wird und nicht von der Optimierung.

Ob die Variable überhaupt lesbar ist, hängt sehr wohl von der Optimierung ab, denn wenn das Programm den Speicherplatz, wo der TDateTime-Wert stand schon freigegeben, oder für was anderes verwendet wurde/wird, dann kann man natürlich nichts mahr lesen.


In Werte-Überwachen (oder so), dann einfach nur DateToStr(VarName) eintragen und das Häckchen bei "Funktionsaufruf erlauben" reinmachen.
Falls DateTimeToStr/DateToStr nicht im Programm verwendet wurde, dann einfach irgendwo diese Funktionen wärend der Testphase einbauen, denn die Funktionen werden halt nur im Programm ausgeführt (der Debugger ruft die dann halt dort auf) und dafür müssen sie halt auch irgendwo im Programm drinstehen.

[add]
ich wünschte mir 'ne RedBox und daß ich etwas schneller schreiben täte, oder hal nicht andere Dinge nebenher mache :roll:

sir-archimedes 7. Jun 2006 14:09

Re: Hat schon mal jemand mit DateTime-Werten debuggt?
 
Wie gesagt, habe ich DateToStr/DateTimeToStr gar nicht verwendet im Programm. Ich habe nur solche Werte verarbeiten müssen und brauchte keine String-Darstellung davon.

Wenn ich die entsprechenden Funktionen einbinde, dann klappts auch beim Debuggen. Ich finde es trotzdem unschön :-/ Ehrlich gesagt möchte ich beim Debuggen nicht darüber nachdenken müssen, welche Methoden vom Linker im Programm vorhanden sind und welche nicht. Aber gut - ich weiß jetzt ja, woran es lag.

Danke euch allen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 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