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?