AGB  ·  Datenschutz  ·  Impressum  







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

DDevExtensions und CompileTime

Ein Thema von Commander Tom · begonnen am 22. Nov 2010 · letzter Beitrag vom 29. Nov 2010
Antwort Antwort
Commander Tom

Registriert seit: 9. Dez 2005
Ort: Ettlingen
64 Beiträge
 
Delphi 12 Athens
 
#1

DDevExtensions und CompileTime

  Alt 22. Nov 2010, 23:34
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 ?
Commander Tom
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

AW: DDevExtensions und CompileTime

  Alt 22. Nov 2010, 23:41
Ich hatte mal so eine Klasse geschrieben, mit der das ging. Muss die gerade mal raus suchen -- einen Moment bitte

-- 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.
Angehängte Dateien
Dateityp: pas classTExeInformation.pas (10,3 KB, 14x aufgerufen)
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (22. Nov 2010 um 23:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#3

AW: DDevExtensions und CompileTime

  Alt 23. Nov 2010, 03:46
http://www.delphipraxis.net/11694-da...date-time.html
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Commander Tom

Registriert seit: 9. Dez 2005
Ort: Ettlingen
64 Beiträge
 
Delphi 12 Athens
 
#4

AW: DDevExtensions und CompileTime

  Alt 29. Nov 2010, 11:46
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...
Commander Tom
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

AW: DDevExtensions und CompileTime

  Alt 29. Nov 2010, 13:32
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: DDevExtensions und CompileTime

  Alt 29. Nov 2010, 14:06
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 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!
Angehängte Dateien
Dateityp: 7z ApFileVersionInformation.7z (88,0 KB, 10x aufgerufen)
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (29. Nov 2010 um 16:54 Uhr) Grund: Neuer, aktualisierter Anhang
  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 11:40 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