![]() |
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:
Beim FindClose kommt dann auch eine entsprechende Meldung.
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; Was mache ich hier falsch ???? |
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:
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.
Windows.Delete(..)
|
Re: DeleteFile() meldet Fehler
oder einfach casten
Delphi-Quellcode:
DeleteFile(PChar(Dir + SearchRec.Name));
|
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, |
Re: DeleteFile() meldet Fehler
Zitat:
|
Re: DeleteFile() meldet Fehler
Ansonsten kann man auch noch schreiben:
Delphi-Quellcode:
SysUtils.DeleteFile(....
|
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 02:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz