Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DeleteFile() meldet Fehler (https://www.delphipraxis.net/60981-deletefile-meldet-fehler.html)

Smiley 15. Jan 2006 13:15


DeleteFile() meldet Fehler
 
Ich habe einen ganz einfachen Codeschnipsel benutzt und bekomme beim Compilieren einen Fehler "Inkompatible Typen: 'TFileName und PAnsiChar'" in der Zeile mit DeleteFile(SearchRec.Name);
Sieht so aus, als wollte er die Windowsfunktion benutzen anstatt der Delphifunktion.

Delphi-Quellcode:
procedure DeleteAll(Dir, Files : string);
var
  SearchRec : TSearchRec;
begin
  if FindFirst(Dir+Files, faAnyFile, SearchRec) = 0 then
    begin
      DeleteFile(SearchRec.Name);
      while FindNext(SearchRec) = 0 do
        DeleteFile(Dir + SearchRec.Name);
    end;
  FindClose(SearchRec);
end;
Beim FindClose kommt dann auch eine entsprechende Meldung.

Was mache ich hier falsch ????

Bernhard Geyer 15. Jan 2006 13:18

Re: DeleteFile() meldet Fehler
 
Falsche Reihenfolge der Uses-Anweisungen.

Sind in 2 Units die gleichen Funktionen definiert "gewinnt" die, dessen Eintrag in der Uses-Anweisung zu letzt vorkommt. Will man auf die Andere Zugreifen muss man den Unitnamen davorsetzen.

z.B. greift
Delphi-Quellcode:
Windows.Delete(..)
immer auf die in Windows.Pas definierte Delete-Funktion zu auch wenn es woanders auch Delete-Funktionen geben würde und diese in der uses-Anweisung später auftauchen.

SirThornberry 15. Jan 2006 13:18

Re: DeleteFile() meldet Fehler
 
oder einfach casten
Delphi-Quellcode:
DeleteFile(PChar(Dir + SearchRec.Name));

Smiley 15. Jan 2006 13:51

Re: DeleteFile() meldet Fehler
 
@Bernhard

Das mit dem Unitproblem kam mir auch schon in den Sinn.
Dort habe ich aber Windows vorne und SysUtils hinten stehen, demnach müsste er zuerst auf die SysUtils zugreifen.

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils,

Bernhard Geyer 15. Jan 2006 13:55

Re: DeleteFile() meldet Fehler
 
Zitat:

Zitat von Smiley
@Bernhard

Das mit dem Unitproblem kam mir auch schon in den Sinn.
Dort habe ich aber Windows vorne und SysUtils hinten stehen, demnach müsste er zuerst auf die SysUtils zugreifen.

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils,

Dann geh mal mit der Maus im Editor auf DeleteFile und lass dir im Hint anzeigen von welcher Unit diese Funktion verwendet wird.

SirThornberry 15. Jan 2006 13:56

Re: DeleteFile() meldet Fehler
 
Ansonsten kann man auch noch schreiben:
Delphi-Quellcode:
SysUtils.DeleteFile(....

Smiley 15. Jan 2006 14:33

Re: DeleteFile() meldet Fehler
 
@Bernhard
Der Hint zeigt SysUtils an, will aber die WindowsUnit benutzen.

Hab den Fehler gefunden:

In der Unit in der ich die Procedure definiert habe, war die Reihenfolge bei uses falsch.
Ich habe fälschlicherweise in der Unit nachgesehen, in der ich die Procedure benutzt habe. (sorry)

Die Hilfe von Dir Bernhard war aber genau das wonach ich gesucht habe, DANKE!

@SirThornberry
Danke auch für die Hilfe mit dem SysUtils.DeleteFile das geht natürlich auch.
Es ging mir aber darum, warum sucht er in der falschen Unit nach dem Programm.

Super schnelle Hilfe, danke an alle.


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