AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi CopyFile und Leerzeichen bzw. Gänsefüsschen
Thema durchsuchen
Ansicht
Themen-Optionen

CopyFile und Leerzeichen bzw. Gänsefüsschen

Ein Thema von SearchBot · begonnen am 11. Jun 2009 · letzter Beitrag vom 11. Jun 2009
Antwort Antwort
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#1

CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 19: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
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#2

Re: CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 19:10
Zitat von SearchBot:
Kann mir bitte jemand (zu mehr Verständnis ver)helfen?
Lass Dir mal FVon und FNach vor dem CopyFile ausgeben via ShowMessage z.B.. Einfach um sicher zu gehen das die Pfade korrekt zusammengesetzt werden. Außerdem wäre der Rückgabewert von GetLastError nützlich.
Fridolin Walther
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#3

Re: CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 19:12
Also bei mir klappts mit createdir('C:\Test Leerzeichen'); wie lautet dein Pfad zum erstellen?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 19:14
Das Erstellen des Ordners ist ja nicht das Problem.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#5

Re: CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 19:16
Ups, Thema verfehlt! Sorry
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#6

Re: CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 20:33
Zitat von 0xF30FC7:
Lass Dir mal FVon und FNach vor dem CopyFile ausgeben via ShowMessage z.B.. Einfach um sicher zu gehen das die Pfade korrekt zusammengesetzt werden. Außerdem wäre der Rückgabewert von GetLastError nützlich.
Die Pfade sind korrekt.

hmm...
oh?







Ich habe bei n ein Zeichen zuviel kopiert, dummerweise ein fast nicht sichtbares Leerzeichen am Ende des Strings...

Aber eigentlich sollte das von
  if pos(#32,n)=length(n) then delete(n,length(n),1); entfernt werden, hat aber irgendwie nicht geklappt...

Jetzt
Danke für Eure Hirnanstöße.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#7

Re: CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 20:36
Mit Trim() wäre das einfacher gegangen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

Re: CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 20:46
if pos(#32,n)=length(n) then delete(n,length(n),1); Pos findet das erste Leerzeichen

und die Abfrage lautet hier
> lösche letztes Zeichen, wenn es nur ein Leerzichen gibt und dieses am Ende des Strings liegt
$2B or not $2B
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
317 Beiträge
 
Delphi 12 Athens
 
#9

Re: CopyFile und Leerzeichen bzw. Gänsefüsschen

  Alt 11. Jun 2009, 22:34
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz