Hi,
dein Problem liegt darin, dass du den Name, der in der CheckListBox steht als Quelle nimmst. Aber die Quelle ist ja ganz anders. Ich hab hierzu eine kleine Hilfsfunktion geschrieben. Diese sucht anhand des Namens in der CheckListBox nach dem Pfad inklusive Dateiname des Cookies:
Code:
// "Dateiname" ist der Name in der CheckListBox
function FindeItem(Dateiname: PAnsiChar): PAnsiChar;
var
icei : PINTERNETCACHEENTRYINFO;
dwSize : DWord;
hSearch : DWord;
begin
dwSize := 65536;
icei := AllocMem(dwSize);
try
hSearch := FindFirstURLCacheEntry(Dateiname,icei^,dwSize);
if hSearch = 0 then
begin
ShowMessage(SysErrorMessage(GetLastError)+' '+IntToStr(dwSize));
exit;
end;
if hSearch <> 0 then
begin
result := icei^.lpszLocalFileName;
end;
finally
FreeMem(icei,65536);
end;
end;
Den Kopiervorgang startest du nun mit folgendem Befehl:
Code:
CopyFile(FindeItem(PChar(Form1.CheckListBox1.Items[i])), PChar(Pfad + ExtractFileName(FindeItem(PChar(Form1.CheckListBox1.Items[i])))), true);
Eigentlich ist es ineffizient FindeItem 2x aufzurufen. Ich hab aber versucht den result in ner Variable zu speichern und da hat mir ExtractFileName nur den Anfang des Namens kopiert (kann daran liegen, dass mein Windows-Benutzername aus 2 Wörtern besteht).
Ich hoffe das hilft dir weiter. Auf jeden Fall sollte es so funktionieren.
mfG Niels