Einzelnen Beitrag anzeigen

SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
272 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 18:07
Ich mache das gerade mit TurboDelphi (Borland® Delphi® für Microsoft® Windows™ Version 10.0.2288.42451 Update 2)
auf Windows VISTA, aber nicht auf der Platte C, sondern D - da laufen alle Programme ohne Starterlaubnisabfrage! Komischerweise.

Ich möchte meine MP3-Sammlung sortieren - klar gibts dafür schon Tools, aber Selbst-Ist-Der-Mann!
In meinem Projekt will ich anhand des Dateinamens Ordner anlegen und dann die Lieder dorthinein verschieben/kopieren.

zB habe ich 2 MP3s:
Code:
Mordi - Conical [Remix].mp3
Doron Deutsch - Forbidden Forest (2008 return to jungle mix) .mp3
Ich mache es aber so:
Ich kopiere den Namenstring bis zum " - ", das ist eindeutig und bei allen MP3s so, die ich habe (von hier: http://remix.kwed.org - wen es interessiert). Der ist dann in der Variable n gespeichert.

Dann lege ich mit
Delphi-Quellcode:
  if not DirectoryExists(DirectoryListBox2.Directory+'\'+n) then
   CreateDir(DirectoryListBox2.Directory+'\'+n);
das neue Verzeichnis an, wenn nicht schon vorhanden, klappt jedesmal.

Jetzt kommt mein Problem: CopyFile bzw MoveFile
Aber erst mal zum Testen mit CopyFile.

Delphi-Quellcode:
Fvon:=format('%s\%s',[Filelistbox1.Directory,Filelistbox1.Items[i]]);
Fnach:=format('%s\%s\%s',[Filelistbox2.Directory,n,Filelistbox1.Items[i]]);
windows.CopyFile(PAnsiChar(Fvon),PAnsiChar(Fnach),false);
Das klappt bei allen MP3 von Mordi.
Die von Doron Deutsch werden aber nicht kopiert. Der Ordner bleibt leer.

Jaa, klar, die Gänsefüßchen fehlen, hab ich gedacht:
windows.CopyFile(PAnsiChar('"'+Fvon+'"'),PAnsiChar('"'+Fnach+'"'),false); Nö, der Ordner bleibt leer.

Aah.. der Pufferabschluss fehlt:
Delphi-Quellcode:
windows.CopyFile(PAnsiChar('"'+Fvon+'"'+#0),PAnsiChar('"'+Fnach+'"'+#0),false);
windows.CopyFile(PAnsiChar(Fvon+#0),PAnsiChar(Fnach+#0),false);
Nö, weder noch, der Ordner bleibt leer.

Im Forum rumgesucht... Ersetzen der Leerzeichen durch %20 - erfolglos. Andere Kopiermethode mit FileStream - erfolglos.

Irgendwie ist das Leerzeichen im Ordnernamen funktionsbehindernd und ich weiß nicht, wie ich das lösen soll. Ich weiß, man kann es irgendwie mit Gänsefüßchen " machen, aber ich weiß nicht wie, ich habe ja schon allerlei Möglichkeiten durchprobiert.


Kann mir bitte jemand (zu mehr Verständnis ver)helfen?
  Mit Zitat antworten Zitat