Hallo,
ich habe folgendes Problem:
mit
Delphi-Quellcode:
sl := TStringList.Create;
htp := TIdHTTP.Create(Self);
SL.Values['size'] := '180';
s := htp.Post('http://www.josefkoller.de/aus_delphi1.php',
SL);
...
schicke ich einen Wert an ein php-Script. Ab dem übergebenden Wert werden auf dem Server mit dem php Script Datensätze aus einer
mySQL DB ausgelesen und in eine SQLite
DB geschrieben.
Das funktioniert auch so wie es soll.
Dann hole ich diese SQLite
DB mittels http get vom Server und speichere sie auf dem lokalen Rechner.
Delphi-Quellcode:
procedure ...
var
lStream: TFileStream;
htp2: TIdHTTP;
begin
htp2 := TIdHTTP.Create(self);
try
if fileexists('C:\borland\IMKEREIDB_IMP.sqlite') then
begin
if DelFile('C:\borland\IMKEREIDB_IMP.sqlite') = true then
begin
lStream:=TFileStream.Create('C:\borland\IMKEREIDB_IMP.sqlite', fmCreate or fmShareDenyNone);
HTP2.Get('http://www.josefkoller.de/IMKEREIDB_IMP.sqlite',lStream);
end else
ShowMessage('Fehler Datei löschen');
end else
begin
lStream:=TFileStream.Create('C:\borland\IMKEREIDB_IMP.sqlite', fmCreate or fmShareDenyNone);
HTP2.Get('http://www.josefkoller.de/IMKEREIDB_IMP.sqlite',lStream);
end;
finally
lStream.Free;
htp2.Free;
end;
end;
Nun das Problem:
Wenn ich das ganze mehrmals aufrufe, wird die vormalige Datei nicht "richtig" gelöscht.
Soll heißen:
Ich rufe das Script mit unterschiedlichen Werten auf (einmal 190, dann 200, dann 220, usw.).
Die Importdatei müßte nun einmal die Datensättze ab der ID 190, dann ab der ID 200 und dann ab der 220 enthalten.
Auf dem lokalen Rechner ist aber immer die Datei mit den Datensätzen ab 190 da.
Es muß mit der Zeile
if DelFile('C:\borland\IMKEREIDB_IMP.sqlite') = true then
Die Datei wird zwar beim 2. Durchlauf gelöscht und der Stream erzeugt auch eine neue Datei mit dem gleichen Namen, aber es wird eben immer wieder die erstmalig unter diesem Namen erzeugte Datei erzeugt.
Wenn ich den Dateinamen mit jedem Aufruf verändere, also
'C:\borland\IMKEREIDB_IMP.sqlite' = Datensätze ab 190
dann
'C:\borland\IMKEREIDB_IMP1.sqlite' = Datensätze ab 200
dann
'C:\borland\IMKEREIDB_IMP2.sqlite' = Datensätze ab 2200
usw.
ist alles richtig. Die Datei hat die gewünschte Anzahl von Datensätzen.
Wie kann ich die Datei auf dem lokalen Rechner, also 'C:\borland\IMKEREIDB_IMP.sqlite', so löschen,
daß sie auch richtig weg ist und bei wiederholtem Erzeugen nicht immer die erstmalig Erzeugte wieder regeneriert wird.
Vielen Dank
Josef