Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TXT - Datei in IF - Abfrage löschen. (https://www.delphipraxis.net/62036-txt-datei-if-abfrage-loeschen.html)

Chrissi91 30. Jan 2006 08:29


TXT - Datei in IF - Abfrage löschen.
 
Hi :hi:,

wieder mal eines meiner Probleme:

ich habe eine IF - Abfrage, ob eine Datei existiert. Dann lösche ich diese in der IF - Abfrage und mache danach noch etwas.

Delphi-Quellcode:
var
  zeilen, i: integer;
  inhalt: array [1..100] of string;
  hilf: string;
  datei: textfile;
  geloescht: boolean;
begin
 if fileexists(ExtractFilePath(ParamStr(0))+'\Ressourcen\'+edtTitel2.Text+'.txt') then //Sie existiert.
  begin
   geloescht:=false;
   deletefile(ExtractFilePath(ParamStr(0))+'\Ressourcen\'+edtTitel2.Text+'.txt'); // Macht er nicht.

   assignfile(datei,ExtractFilePath(ParamStr(0))+'\Ressourcen\liste.txt'); //Ab hier an, macht er alles
   reset(datei);
   zeilen:=0;
   repeat
    zeilen:=zeilen+1;
    readln(datei,hilf);
    if hilf <> edtTitel2.Text then inhalt[zeilen]:=hilf else geloescht:=true;
   until eof(datei);
   closefile(datei);
...
Warum löscht er die Datei mit

Delphi-Quellcode:
deletefile(ExtractFilePath(ParamStr(0))+'\Ressourcen\'+edtTitel2.Text+'.txt');
nicht? Er fragt ob, ob sie exisitiert, und dann löscht er sie nicht? :gruebel:

Habe ich irgendetwas übersehen?

marabu 30. Jan 2006 08:54

Re: TXT - Datei in IF - Abfrage löschen.
 
Hi Christopher,

probiere es nochmal so:

Delphi-Quellcode:
var
  fn: TFileName;
begin
  fn := ExtractFilePath(ParamStr(0)) + 'Ressourcen\' + edtTitel2.Text + '.txt';
  if FileExists(fn) then
  begin
    DeleteFile(fn);
    if FileExists(fn)
      then ShowMessage('delete failed')
      else ShowMessage('file deleted');
  end else ShowMessage('file not found');
ExtractFilePath liefert schon einen TrailingPathDelimiter - und den Dateinamen würde ich nur einmal zusammenbauen.

Grüße vom marabu

RavenIV 30. Jan 2006 09:00

Re: TXT - Datei in IF - Abfrage löschen.
 
aus der Delphi.Hilfe:
Zitat:

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
klar, was Du tun solltest?

Chrissi91 30. Jan 2006 09:04

Re: TXT - Datei in IF - Abfrage löschen.
 
Zitat:

Zitat von marabu
Hi Christopher,

probiere es nochmal so:

Delphi-Quellcode:
var
  fn: TFileName;
begin
  fn := ExtractFilePath(ParamStr(0)) + 'Ressourcen\' + edtTitel2.Text + '.txt';
  if FileExists(fn) then
  begin
    DeleteFile(fn);
    if FileExists(fn)
      then ShowMessage('delete failed')
      else ShowMessage('file deleted');
  end else ShowMessage('file not found');
ExtractFilePath liefert schon einen TrailingPathDelimiter - und den Dateinamen würde ich nur einmal zusammenbauen.

Grüße vom marabu

Alles klar. Teste ich gleich. Danke Marabu.



Zitat:

Zitat von RavenIV
aus der Delphi.Hilfe:
Zitat:

If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
klar, was Du tun solltest?

Hoffe ich. :zwinker:

Also soll ich mir den Fehler anzeigen lassen. Der Rückgabewert könnte 0 sein. :gruebel:

marabu 30. Jan 2006 09:14

Re: TXT - Datei in IF - Abfrage löschen.
 
Hallo RavenIV,

auch für mich lohnt sich scheinbar hin und wieder ein Blick in die Online-Hilfe. Du hast die Hilfe zur API Funktion zitiert - es gibt aber eine Delphi Kapsel in SysUtils, die aufgerufen wird:

Delphi-Quellcode:
var
  fn: TFileName;
begin
  fn := ExtractFilePath(ParamStr(0)) + 'Ressourcen\' + edtTitel2.Text + '.txt';
  if DeleteFile(fn)
    then ShowMessage('file deleted')
    else ShowMessage(SysErrorMessage(GetLastError));
Freundliche Grüße vom marabu

RavenIV 30. Jan 2006 09:15

Re: TXT - Datei in IF - Abfrage löschen.
 
Zitat:

Zitat von Chrissi91

Hoffe ich. :zwinker:

Also soll ich mir den Fehler anzeigen lassen. Der Rückgabewert könnte 0 sein. :gruebel:

richtig.
bei Fileoperationen sollte man immer den Rückgabewert prüfen und entsprechend darauf reagieren.
(z.B. den Benutzer aufmerksam machen)

Chrissi91 30. Jan 2006 09:31

Re: TXT - Datei in IF - Abfrage löschen.
 
Aha. Danke Marabu. Durch GetLastError konnte ich herausfinden, dass icht auf die Datei zugegriffen werden konnte. Es kam eine deutsche Fehlermeldung(Ich habe doch aber die englische D7 PE):gruebel:

Ich habe in einer anderen Procedure das "Closefile" vergessen. ^^

Danke an alle, die mir geholfen haben. :angel2:

Da ist das Geburtstaggeschenk für meinen Vater noch rechtzeitig fertig. ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 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