Autor Beitrag
Smartie
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mo 02.05.05 07:37 
Servus!

Ich möchte eine Datei löschen, und hab folgendes in der Hilfe gefunden:
ausblenden Quelltext
1:
2:
3:
function DeleteFile(const FileName: string): Boolean;

DeleteFile löscht die mit FileName angegebene Datei vom Datenträger. Kann die Datei nicht gelöscht oder gefunden werden, gibt die Funktion false zurück.


Ok, dacht ich mir, schön, dann ist ja alles klar, und habs dann versucht:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
// [...]
  Verzeichnis, Satz : String;
begin
  //ini lesen
  IniDat := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'source.ini');
  Satz := 'source';

  Verzeichnis := IniDat.ReadString('source''quelle'' '); // lies aus ini

  // Nun die Datei löschen
  DeleteFile(Verzeichnis);
  
  // [...]


Da brignt er mir aber die Fehlermeldung:
Zitat:
[Fehler] Unit1.pas(455): Inkompatible Typen: 'String' und 'PAnsiChar'


Es ist doch ein sTring, ich weiß gar nicht was er hat. *grübel*

Weiß jemand was da nicht stimmt?

Danke und lieben Gruß

Smartie
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Mo 02.05.05 07:52 
Hallo!

Zitat:
Inkompatible Typen: 'String' und 'PAnsiChar'
sagt doch schon alles

ausblenden Delphi-Quelltext
1:
DeleteFile(PChar(Verzeichnis));					


Ansonsten kannst du auch Google bei Fehlermeldungen zu Rate ziehen:

Suche bei Google INKOMPATIBLE TYPEN: 'STRING' UND 'PANSICHAR'
Smartie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 205



BeitragVerfasst: Mo 02.05.05 08:03 
Alles klar,

Dankeschön.

Gruß

Smartie
Brueggendiek
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 304

Win 98, Win98SE, Win XP Home
D5 Std
BeitragVerfasst: Di 03.05.05 06:25 
Hallo Smartie!

Dein Problem ist darauf zurückzuführen, daß es DeleteFile zweimal gibt:
1. Es gibt den WinAPI-Aufruf, der wie üblich einen Pchar als Parameter erwartet
2. Die Delphi-Kapselung in der Unit SysUtils - und die kommt mit einem String zurecht.

Wie immer bei identischen Bezeichnern in verschiedenen Units, hängt es von der Reihenfolge der Units in der Uses-Anweisung ab, welche genommen wird.

Abhilfe: Da oft ein Umstellen der Uses wieder andere Probleme bringt (vielleicht ist es bei einem weiteren Bezeichner ja genau andersrum gemeint), kann man mit vorgestelltem Unit-Namen diesen Automatismus abschalten. Schreibe also
ausblenden Delphi-Quelltext
1:
SysUtils.DeleteFile(Verzeichnis);					

dann klappt's auch mit dem Nachbarn - ähem String!

Natürlich muß dazu SysUtils in die Uses eingetragen werden.

Wenn Du in der Hilfe selber den Suchbegriff eingibst (F1, dann "DeleteFile"), bekommst Du nur die Delphi-Kapselung. Wenn Du aber im Source "DeleteFile" stehen hast, den Corsor draufsetzt und F1 drückst, bietet die Hilfe beide Varianten an.

Gruß

Dietmar Brüggendiek