Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   DDevExtensions und CompileTime (https://www.delphipraxis.net/156176-ddevextensions-und-compiletime.html)

Commander Tom 22. Nov 2010 22:34

DDevExtensions und CompileTime
 
Hallo zusammen,

ich benutze die DDevExtensions von Andy (http://andy.jgknet.de/blog/ide-tools/ddevextensions/) und habe gesehen, dass diese in den Versionsinformationen ein neues Feld anhängen ("Last Compile") mit der letzten Kompilierzeit.

Meine Frage ist nun, wie greife ich per Code in Delphi auf diese Informationen zu ? Wie kann ich den Inhalt dieses Feldes auslesen ?

s.h.a.r.k 22. Nov 2010 22:41

AW: DDevExtensions und CompileTime
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hatte mal so eine Klasse geschrieben, mit der das ging. Muss die gerade mal raus suchen -- einen Moment bitte 8-)

-- EDIT

Also ich hab die Klasse mal gefunden, wobei ich diese noch etwas überarbeiten muss. Ist schon recht alt ;) Soweit ich weiß, klappt das Auslesen für DLLs leider nicht. Dazu gabs mal einen Thread hier im Forum. Zudem musst du die Klasse im Moment selbst erweitern, eben um die besagte Information! In Zeile 261 kannst ja schon mal ansetzen.

himitsu 23. Nov 2010 02:46

AW: DDevExtensions und CompileTime
 
http://www.delphipraxis.net/11694-da...date-time.html

Commander Tom 29. Nov 2010 10:46

AW: DDevExtensions und CompileTime
 
Hallo himitsu,

mit Deiner Unit geht das wunderbar, allerdings stimmt die Zeit um eine Stunde nicht. Anscheinend unterscheidet sich die Unix-Zeit von der aktuellen Winterzeit.

Einfacher wäre es aber in der Tat gegangen, wenn ich die Versionsinformationen aus DevExtensions hätte verwenden können. Naja, das bleibt dann mal als offene Aufgabe im TODO...

himitsu 29. Nov 2010 12:32

AW: DDevExtensions und CompileTime
 
Standardmäßig gibt es in den PE-Headern der EXE ein Feld für dieses Datum.
Leider stand da nie ein Datum drin, sondern nur eine (von irgendwem) sogenannte Delphi-Magic-Time, also ein bestimmert fester Wert.
Wenn dieser Delphi-Magic-Time gefunden wird, dann sucht der Code an einer anderen Stelle nach der gewünschten Zeit (zum Glück hat Delphi einen Datums-Wert da abgelegt). Wird keine Delphi-Magic-Time gefunden, dann wird diese Zeit als Compile-Time genommen (so wie es eigentlich von Microsoft geplant war).

Die DDevExtensions schreiben bestimmt die CompileTime in das "richtige" Feld mit rein.

"Leider" kann ich das hier nicht direkt prüfen, was die DDevExtensions machen (aber im Notfall kann Andy das ja aufklären),
da Delphi 2010 anschinend die Compile-Time nun endlich in der richtigen Stelle einträgt.



Zitat:

// FIXME: Borland's linker uses the local system time
// of the user who linked the executable image file.
// (is that information anywhere?)
Und diese Zeitverschiebung lößt sich leider nicht vermeiden,
da Delphi leider die lokale Zeit da einträgt.
Man könnte nun zwar über MSDN-Library durchsuchenLocalFileTimeToFileTime/MSDN-Library durchsuchenFileTimeToLocalFileTime dieses umrechnen (direkt nach DosDateTimeToFileTime), aber da man nicht rausfinden kann, in welcher Zeitzone sich der Compiler befand, ist es besser dieses zu belassen, anstatt diese Abweichung eventuell noch mehr zu verfälschen.

s.h.a.r.k 29. Nov 2010 13:06

AW: DDevExtensions und CompileTime
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, habs nun ein Rework der ExeInformation-Klasse geschrieben. Nun sind auch beliebige Informationen auslesbar, in so fern man den Key weiß -- so wie bei den DDevExtensions. Es gibt drei statische
Delphi-Quellcode:
Read()
-Klassenmethoden. Aufgrund einer Demo liefere ich hier mal keine großartige Demo, ist ja auch nicht all zu schwer zu verstehen. Ich habe die Demo auch mal mit der DDevExtensions-Version-Info "Last Compile" ausgestattet, wie man ebenso in der Demo sehen kann.

Hinweis: Problem ist an einigen Stellen, dass man die Informationen von manchen Echsen und DLLs nicht lesen kann, da diese nicht an die von MS vorgeschlagenen Stellen geschrieben wurden. Aber selbst dafür gib es Abhilfe, wie ich neulich raus gefunden habe: http://www.delphidabbler.com/software/vibindata/main

Sollten jedenfalls Probleme oder Fragen auftauchen, dann schickt mir einfach eine PN!


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