AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi TimeDateStamp im IMAGE_FILE_HEADER unterschiedlich
Thema durchsuchen
Ansicht
Themen-Optionen

TimeDateStamp im IMAGE_FILE_HEADER unterschiedlich

Ein Thema von Dalai · begonnen am 14. Mär 2015 · letzter Beitrag vom 16. Mär 2015
 
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.684 Beiträge
 
Delphi 5 Professional
 
#5

AW: TimeDateStamp im IMAGE_FILE_HEADER unterschiedlich

  Alt 15. Mär 2015, 13:15
WOHER kommt dann die SYSTEMZEIT?
Vom OS natürlich.

Zitat:
Gibt es einen TIMESERVER im Netzwerk?
Selbstverständlich. Aber nur die echten Systeme holen sich einmal täglich die Zeit von diesem (mit AboutTime), die VMs nicht. Es betrifft aber alle Systeme.

Zitat:
Wenn ich eine Funktion mit falschen Daten füttere (z.B. LocalDateTimeFromUTCDateTime(now) ), dann kommen natürlich falsche Daten heraus.
Ich berechne in meinem Code keine lokale Zeit (ebensowenig wie das angesprochene Tool, schätze ich mal). Ich hole mir mit dieser Funktion den TimeDateStamp aus dem Executable:
Delphi-Quellcode:
{$IFDEF DELPHI2009_AND_UP}

{ The following two functions are (C) TOndrej @ StackOverflow
  http://stackoverflow.com/questions/8437300/how-can-i-automate-getting-the-date-of-build-into-a-constant-visible-to-my-code }


function LinkerTimeStamp(const FileName: AnsiString): TDateTime;
var
  LI: TLoadedImage;
begin
  if NOT MapAndLoad(PAnsiChar(FileName), nil, @LI, False, True) then
      RaiseLastOsError;
  Result := LI.FileHeader.FileHeader.TimeDateStamp / SecsPerDay + UnixDateDelta;
  UnMapAndLoad(@LI);
end;

//------------------------------------------------------------------------------

function LinkerTimestamp: TDateTime;
begin
    Result := PImageNtHeaders(HInstance
                              + PImageDosHeader(HInstance)^._lfanew)^.FileHeader.TimeDateStamp
                              / SecsPerDay
                              + UnixDateDelta;
end;
{$ENDIF}
Und vergleiche dessen Ausgabe mit dem Zeitstempel des Executable selbst, den man im Total Commander, Explorer oder woanders ablesen kann. Probier mal die Funktion selbst aus, vermutlich bekommst du dann auch zwei Stunden Abweichung, obwohl es laut Zeitzone GMT+1 nur eine sein dürfte.

MfG Dalai
  Mit Zitat antworten Zitat
 


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 15:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz