![]() |
CopyFile und Leerzeichen bzw. Gänsefüsschen
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:
Ich mache es aber so:
Mordi - Conical [Remix].mp3
Doron Deutsch - Forbidden Forest (2008 return to jungle mix) .mp3 Ich kopiere den Namenstring bis zum " - ", das ist eindeutig und bei allen MP3s so, die ich habe (von hier: ![]() Dann lege ich mit
Delphi-Quellcode:
das neue Verzeichnis an, wenn nicht schon vorhanden, klappt jedesmal.
if not DirectoryExists(DirectoryListBox2.Directory+'\'+n) then
CreateDir(DirectoryListBox2.Directory+'\'+n); Jetzt kommt mein Problem: CopyFile bzw MoveFile Aber erst mal zum Testen mit CopyFile.
Delphi-Quellcode:
Das klappt bei allen MP3 von Mordi.
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); Die von Doron Deutsch werden aber nicht kopiert. Der Ordner bleibt leer. Jaa, klar, die Gänsefüßchen fehlen, hab ich gedacht:
Delphi-Quellcode:
Nö, der Ordner bleibt leer.
windows.CopyFile(PAnsiChar('"'+Fvon+'"'),PAnsiChar('"'+Fnach+'"'),false);
Aah.. der Pufferabschluss fehlt:
Delphi-Quellcode:
Nö, weder noch, der Ordner bleibt leer.
windows.CopyFile(PAnsiChar('"'+Fvon+'"'+#0),PAnsiChar('"'+Fnach+'"'+#0),false);
windows.CopyFile(PAnsiChar(Fvon+#0),PAnsiChar(Fnach+#0),false); 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. :gruebel: Kann mir bitte jemand (zu mehr Verständnis ver)helfen? |
Re: CopyFile und Leerzeichen bzw. Gänsefüsschen
Zitat:
|
Re: CopyFile und Leerzeichen bzw. Gänsefüsschen
Also bei mir klappts mit
Delphi-Quellcode:
wie lautet dein Pfad zum erstellen?
createdir('C:\Test Leerzeichen');
|
Re: CopyFile und Leerzeichen bzw. Gänsefüsschen
Das Erstellen des Ordners ist ja nicht das Problem.
|
Re: CopyFile und Leerzeichen bzw. Gänsefüsschen
Ups, Thema verfehlt! Sorry :wall:
|
Re: CopyFile und Leerzeichen bzw. Gänsefüsschen
Zitat:
hmm... oh? :gruebel: :pale: :wall: Ich habe bei n ein Zeichen zuviel kopiert, dummerweise ein fast nicht sichtbares Leerzeichen am Ende des Strings... Aber eigentlich sollte das von
Delphi-Quellcode:
entfernt werden, hat aber irgendwie nicht geklappt...
if pos(#32,n)=length(n) then delete(n,length(n),1);
Jetzt :thumb: Danke für Eure Hirnanstöße. :zwinker: |
Re: CopyFile und Leerzeichen bzw. Gänsefüsschen
Mit Trim() wäre das einfacher gegangen ;)
|
Re: CopyFile und Leerzeichen bzw. Gänsefüsschen
Delphi-Quellcode:
Pos findet das erste Leerzeichen
if pos(#32,n)=length(n) then delete(n,length(n),1);
und die Abfrage lautet hier > lösche letztes Zeichen, wenn es nur ein Leerzichen gibt und dieses am Ende des Strings liegt :angel: |
Re: CopyFile und Leerzeichen bzw. Gänsefüsschen
Achja,
ich werde alt. Und habe schon länger kein Delphi mehr gemacht, da vergesse ich langsam den Wortschatz. Trim! Klar. Pos-Denkfehler. Owei. Danke für die Entkalkung meiner Denkzentrale. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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-2025 by Thomas Breitkreuz