Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi ExpireTime eines IE-Cookie als TDateTime (https://www.delphipraxis.net/81923-expiretime-eines-ie-cookie-als-tdatetime.html)

DirkG 5. Dez 2006 12:55


ExpireTime eines IE-Cookie als TDateTime
 
Hallo!
Ich versuche gerade einen Cookie-Verwalter zu schreiben. Dazu habe ich mir mal folgende Infos besorgt.

Zitat:

Der Internet Explorer verwaltet die Cookies nach Domain getrennt in eigenen Textdateien. Diese befinden sich im persönlichen Verzeichnis des betreffenden Benutzers. Die Dateinamen haben das Format "benutzer@host.domain[n].txt". In den Dateien sind die einzelnen Felder mit einem Wagenrücklaufszeichen (CR bzw. 0x13) voneinander getrennt. Als Abtrennung zwischen den einzelnen Cookies wird am Ende eines jeden Datensatzes, der aus 9 Zeilen besteht, ein Stern-Zeichen (*) verwendet.

Beispiel:

password
7b38fa7624f6b56ec107e96b5519a69
gaijin.at/
1024
4208438528
29838657
3786827328
29765232
*

Zeile 1
Name des Cookies
Zeile 2
Cookie-Daten
Zeile 3
Domain bzw. Host und Pfad für den das Cookie gültig ist.
Zeile 4
Unbekannt
Zeile 5
Gültigkeit (niederwertigeres DWord der FileTime-Struktur)
Zeile 6
Gültigkeit (höherwertigeres DWord der FileTime-Struktur)
Zeile 7
Erstellungszeit (niederwertigeres DWord der FileTime-Struktur)
Zeile 8
Erstellungszeit (höherwertigeres DWord der FileTime-Struktur)
Zeile 9
Stern-Zeichen (*) zur Trennung

Die Gültigkeit und die Erstellungszeit sind im für Windows üblichen FileTime-Format gespeichert. Auch hier werden die Zeitangaben in der UTC-Zeit abgespeichert.

Quelle : Internet Explorer Cookies
Nun zum Problem: Ich würde gerne die Zeiten aus Zeile 5+6 und 7+8 im TDateTime - Format von Delphi verwenden. Was muss ich tun, um die Zeit zu erhalten? Bisher habe ich versucht mit TimeStampToDateTime eine Umwandlung zu erreichen, aber das Ergebnis ist nicht gerade befriedigend.

Kann mir jemand sagen, wo ich ansetzen muss?

Ydobon 5. Dez 2006 19:21

Re: ExpireTime eines IE-Cookie als TDateTime
 
Versuch es mal so:
Delphi-Quellcode:
var x: TFileTime;
    y: TSystemTime;
    z: TDateTime;
begin
  x.dwLowDateTime:=3786827328;
  x.dwHighDateTime:=29765232;
  FileTimeToSystemTime(x, y);
  z:=SystemTimeToDateTime(y);
  ShowMessage(DateToStr(z)+' '+TimeToStr(z));

DirkG 5. Dez 2006 20:53

Re: ExpireTime eines IE-Cookie als TDateTime
 
Hey Ydobon!
Danke für die schnelle Antwort.
:bounce2: Hat so funktioniert. Musste nun nur noch den String vom Auslesen in eine Int64 umwandeln. Meine Lösung sieht nun so aus:

Delphi-Quellcode:
var fCookieName       : string;
    fCookieData       : string;
    fCookieDomain     : string;
    fCookieDummy      : string;
    fCookieExpiresLow : string;
    fCookieExpiresHigh : string;
    fCookieCreateLow  : string;
    fCookieCreatehigh : string;
    fCookieSpacer     : string;

procedure ReadCookieFromFile(FileName: string);
var CkLines: TStrings; i: integer;
begin
  CkLines:= TStringlist.Create;
  CkLines.LoadFromFile(FileName);
  for i:= 0 to CkLines.Count-1 do
    case i of
      0: fCookieName       := Trim(CkLines.Strings[i]);
      1: fCookieData       := Trim(CkLines.Strings[i]);
      2: fCookieDomain     := Trim(CkLines.Strings[i]);
      3: fCookieDummy      := Trim(CkLines.Strings[i]);
      4: fCookieExpiresLow := Trim(CkLines.Strings[i]);
      5: fCookieExpiresHigh := Trim(CkLines.Strings[i]);
      6: fCookieCreateLow  := Trim(CkLines.Strings[i]);
      7: fCookieCreatehigh := Trim(CkLines.Strings[i]);
      8: fCookieSpacer     := Trim(CkLines.Strings[i]);
    end;
  CkLines.Free;
end;

function GetCookieCreate: TDateTime;
var x: TFileTime; y: TSystemTime;
begin
  x.dwLowDateTime := StrToInt64(fCookieCreateLow);
  x.dwHighDateTime := StrToInt64(fCookieCreateHigh);
  FileTimeToSystemTime(x, y);
  Result:= SystemTimeToDateTime(y);
end;
Danke


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