AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi ExpireTime eines IE-Cookie als TDateTime
Thema durchsuchen
Ansicht
Themen-Optionen

ExpireTime eines IE-Cookie als TDateTime

Ein Thema von DirkG · begonnen am 5. Dez 2006 · letzter Beitrag vom 5. Dez 2006
Antwort Antwort
Benutzerbild von DirkG
DirkG

Registriert seit: 29. Sep 2003
Ort: Schwerin
67 Beiträge
 
Delphi 5 Enterprise
 
#1

ExpireTime eines IE-Cookie als TDateTime

  Alt 5. Dez 2006, 12:55
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?
Human are Human to make mistakes.
  Mit Zitat antworten Zitat
Ydobon

Registriert seit: 3. Mär 2006
261 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ExpireTime eines IE-Cookie als TDateTime

  Alt 5. Dez 2006, 19:21
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));
  Mit Zitat antworten Zitat
Benutzerbild von DirkG
DirkG

Registriert seit: 29. Sep 2003
Ort: Schwerin
67 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: ExpireTime eines IE-Cookie als TDateTime

  Alt 5. Dez 2006, 20:53
Hey Ydobon!
Danke für die schnelle Antwort.
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
Human are Human to make mistakes.
  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 23:43 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