
Zitat von
Ruio:
Ich hab nur Chrome für Testzwecke Installiert.
Die Tabelle scheint leer zu sein ...
Kannst du ein paar Seiten mit Chrome aufrufen um sicherzustellen das Cookies vorhanden sein müssen? Evtl. noch im Einstellungen-Dialog schauen, gibt z. B. eine Option um alle Cookies beim Beenden zu löschen, vllt. ist deshalb die Tabelle leer. Im Anhang findest du ein Bild wie die Struktur der
Db bei mir aussieht. Möglicherweise ist deine Cookies-Datei auch nur beschädigt. Wenn du diese löscht sollte sie von Chrome wieder korrekt angelegt werden.
Den Host_key hatte ich vorher auch schon implementiert, hab da vorhin was durcheinander gebracht (kein Wunder wenn man 11 verschiedene Cookie-Formate im Kopf hat...). Ansonsten kann ich mir nicht erkären warum dieser Fehler auftritt. Ich überprüfe beim Zugriff auf die Datei ob die Tabelle vorhanden ist.
Delphi-Quellcode:
procedure TBcChromeCookies.LoadFromFile(FileName:
string);
var
db: TSQLiteDatabase;
table: TSQLIteTable;
begin
Clear;
db := TSQLiteDatabase.Create(FileName);
try
if db.TableExists('
cookies')
then
begin
table :=
db.GetTable('
SELECT creation_utc, host_key, name, value, path, expires_utc, secure, httponly, last_access_utc FROM cookies');
try
while not table.EOF
do
begin
with Cookies[Add]
do
begin
Name := table.FieldAsString(table.FieldIndex['
name']);
Content := table.FieldAsString(table.FieldIndex['
value']);
Domain := table.FieldAsString(table.FieldIndex['
host_key']);
Path := table.FieldAsString(table.FieldIndex['
path']);
Expires.AsWebKitTime(StrToInt64(table.FieldAsString(table.FieldIndex['
expires_utc'])));
Secure := LongBool(StrToIntDef(table.FieldAsString(table.FieldIndex['
secure']), 0));
WholeDomain := LongBool(StrToIntDef(table.FieldAsString(table.FieldIndex['
httpOnly']), 0));
LastAccessed.AsWebKitTime(StrToInt64(table.FieldAsString(table.FieldIndex['
last_access_utc'])));
Created.AsWebKitTime(StrToInt64(table.FieldAsString(table.FieldIndex['
creation_utc'])));
end;
table.Next;
end;
finally
table.Free;
end;
end;
finally
db.Free;
end;
end;