Einzelnen Beitrag anzeigen

josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#1

Delete file in Verbindung mit INDY idHTTP get

  Alt 13. Feb 2013, 11:20
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
  Mit Zitat antworten Zitat