|
|
||||||
|
#1
|
|
|
|
|
Hallo NG,
nur mal zur Sicherheit gefragt: Ist das wirklich so, wie ich diesen Effekt heute beobachten konnte - benutzt man Unit Windows, dann funktioniert deletefile nur mit PAnsiChar, verzichtet man auf die Unit Windows, dann akzeptiert deletefile einen String? Ich habe genau diesen Effekt in einer kleinen DLL - sobald ich die Unit Windows reincompiliere (Reihenfolge: sysutils, dann windows), hört der Compiler genau am DeleteFile-Statement auf und meckert über PAnsiChar und String; verzichte ich darauf (oder ändere ich die Reihenfolge auf windows, dann sysutils), gehts? Die Online-Hilfe hat mich zu dem Thema irgendwie im Stich gelassen ... danke für Erläuterungen. Oder was unterscheidet die beiden (offensichtlich vorhandenen) Varianten von DeleteFile sonst noch so? Sehe ich hier Unicode-Dateinamen als Grund, oder hat es eine andere Ursache? Bjoern |
|
|
|
#2
|
|
|
|
|
Bjoern Wiechmann <bwiechmann> wrote:
>Sehe ich hier Unicode-Dateinamen als Grund, oder hat es eine andere >Ursache? Beide Units definieren 'deletefile', die eine so, die andere so. Und du hast ja schon gemerkt, in welcher Reihenfolge der Compiler nach den Definitionen sucht. Lösung: entweder die 'richtig' Reihenfolge verwenden oder zusätzlich mit unit.prozedure qualifizieren. |
|
#3
|
|
|
|
|
Hi,
> Guck' nach. Die eine findest Du in der API-Hilfe beschrieben. Die andere > ist in Sysutils.pas nachzulesen. In diesem Fall ist es ein Einzeiler: > Result:=Windows.DeleteFile(PChar(FileName)); also das ist irgendwie auch schon fast ein Joke of the day ... aber danke, damit ist alles klar. |
|
#4
|
|
|
|
|
Hi,
> nur mal zur Sicherheit gefragt: Ist das wirklich so, wie ich diesen > Effekt heute beobachten konnte Ja. Die Unit Windows und die Unit SysUtils deklarieren beide etwas namens DeleteFile(). Wenn man beim Aufruf nicht angibt, welches man meint, so wird das aus der Unit verwendet, die in der Uses-Liste am weitesten hinten steht. Das ist auch der Grund dafür, daß man allgemeine Units in dieser Liste weiter vorne hinschreiben sollte als speziellere. Willst Du unbedingt ein bestimmtes DeleteFile() verwenden, so "qualifizierst" Du den Aufruf: SysUtils.DeleteFile(..); Windows.DeleteFile(..); > Oder was unterscheidet die beiden (offensichtlich vorhandenen) > Varianten von DeleteFile sonst noch so? Guck' nach. Die eine findest Du in der API-Hilfe beschrieben. Die andere ist in Sysutils.pas nachzulesen. In diesem Fall ist es ein Einzeiler: function DeleteFile(FileName:string):boolean; begin Result:=Windows.DeleteFile(PChar(FileName)); end; :-). Ciao, MM |
|
|
| Ähnliche Themen | |
| Lazarus und uses Windows Moin, wenn ich in einem Lazarus-Projekt unter Windows 32 "uses Windows" nutzen will, bekomme ich im bestehenden Code folgende Fehlermeldung: unit1.pas(183,26) Error:... |
|
| Basis für My.FileSystem.DeleteFile Hi, My.FileSystem bietet einige Methodenüberladungen, die die Windows-Shell-Spielereien mit den fliegenden Blättern nutzen (SHFileOperation in der API). Finden sich diese... |
|
| DeleteFile funktioniert nicht Hallo, ich habe ein Programm geschrieben, bei dem auf Dateien in einem bestimmten Ordner zugegriffen wird, um zu verhindern, dass jemand anderes mit dem Programm aus dem... |
|
| Business Connector: Services ´deleteFile´ und ´moveToFile´ Hallo, Hab ein Problem mit den Services ´writeToFile´ und ´deleteFile´. Wollte diese noch am Ende in meinen Flow einnbinden, um das verarbeitete EDI-File vom... |
|
|
Alle Zeitangaben in WEZ. Es ist jetzt 03:50 Uhr. | Privacy Policy
|