Parentfolder eines Ordners

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Panik
Beiträge: 9
Registriert: 21.03.2007 20:18

Parentfolder eines Ordners

Beitrag von Panik »

Hallo !

Ich möchte einen Ordner umbenennen, von dem ich in einem String mit Namen zielordner$ diesen Ausdruck habe:
C:\Bilder\Mustermann\verzeichnis1\

Im Programm ergibt sich ein String bilderordner$ mit Inhalt: Urlaubsbilder_2007

Ergebnis des Umbenennens soll praktisch sein:
C:\Bilder\Mustermann\Urlaubsbilder_2007\

Mein probeweiser Erfolg war nachdem ich

Code: Alles auswählen

RenameFile(zielpfad$, bilderordner$)
eingab, daß mir der Ordner zwar umbenannt, aber auch verschoben (dahin, wo das Programm selbst ist ) wurde :shock:

Leider habe ich in der deutschen und englischen Pureboardsuche keinen Hinweis bekommen, wie ich das übergeordnete Verzeichnis eines Ordners erhalte und in einem String hinterlege.
Dann könnte ich es so testen

Code: Alles auswählen

RenameFile(zielpfad$, parentfolder$ + bilderordner$) 
Gibt es einen Tip ?
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Parentfolder eines Ordners

Beitrag von Kiffi »

Panik hat geschrieben:Gibt es einen Tip ?
einfache Stringoperationen machen es möglich:

Code: Alles auswählen

Procedure.s GetParentFolder(Folder.s)
  Protected Counter.l
  Protected ParentFolder.s
  If Right(Folder,1)<> ""
    Folder + ""
  EndIf
  For Counter = 1 To CountString(Folder, "") - 1
    ParentFolder + StringField(Folder, Counter, "") + ""
  Next  
  ProcedureReturn ParentFolder
EndProcedure
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Warum gehts denn nicht auch so:

Das Parentfolder von C:\Bilder\Mustermann\ ist
C:\Bilder\Mustermann\..\

:wink:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

AND51 hat geschrieben:Warum gehts denn nicht auch so:
klar geht das auch so. Allerdings könnten dann bei weiterer Verarbeitung des
Ordnernamens leicht Konstrukte solcher Art entstehen:

C:\Programme\PureBasic\..\..\Programme\PureBasic\..\PureBasic\Compilers\..\..\PureBasic\..\..\

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ja, das stimmt, da muss man dann schon sauber programmieren.

Habe hier eine Prozedur, die ca. 4x schneller ist als deine:

Code: Alles auswählen

Procedure.s myGetParentFolder(Folder.s)
	If Right(Folder, 1) <> "\"
		Folder+"\"
	EndIf
	Protected *pos.Character=@Folder+MemoryStringLength(@Folder)-SizeOf(Character)*2
	While Not *pos = @Folder
		If *pos\c = 92 ; 92 is a backslash
			Break
		EndIf
		*pos-SizeOf(Character)
	Wend
	ProcedureReturn PeekS(@Folder, *pos-@Folder+SizeOf(Character))
EndProcedure
Frage: Ist 92 auch der Wert eines BackSlashes, wenn man Unicode benutzt?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Panik
Beiträge: 9
Registriert: 21.03.2007 20:18

Beitrag von Panik »

Hallo !

Kiffi hat recht, und seine Lösung ist gut+funktioniert.

Der besagte Pfad wird vorher außerdem über einen Auswahldialog ermittelt ( z.B. auch D:\Fotosammlung\Oma\Neuer Ordner)
Im Laufe des Programms ergeben sich dynamisch durch Nutzereingaben einige Inhalte, aus deren Kombination der Nutzer am Ende mehrere Vorschläge bekommt, wie der eben mit Daten gefüllte Ordner nun umbenannt wird.
( D:\Fotosammlung\Oma\Oma_Hilde_Besuch_Oktober_2006 )
Daher klappt der 1. etwas unflexible Vorschlag von AND51 nicht .

Danke Euch , besonders Kiffi !

Nachtrag zum 2. Vorschlag von AND51 :
Ok - jetzt danke ich euch beiden besonders ! :wink:

Panik
Zuletzt geändert von Panik am 26.03.2007 15:39, insgesamt 1-mal geändert.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Stimmt, das mit ".." eigenet sich wohl eher doch nur für Skripte wie PHP, Perl und JavaScript und auch HTML, wo die Pfade immer gleich bleiben; nicht jedoch für Hochprogrammiersprachen wir PB.
Es sei denn, man läd beispielsweise Images, die immer ein Verzeichnis höher liegen als die EXE oder so.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

AND51 hat geschrieben:Habe hier eine Prozedur, die ca. 4x schneller ist als deine:
ja, schön.

@Panik: Görn g'schehn!

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Wo ist das Smiley bei deinem "schön"...?

Ach ja: und was ist mit meienr Frage? Weißt du was nähres dazu?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

AND51 hat geschrieben:Wo ist das Smiley bei deinem "schön"...?
wieso? Muss ich da eins rein? Im Zweifelsfall nimmste das große auf der
linken Seite.
AND51 hat geschrieben:Ach ja: und was ist mit meienr Frage? Weißt du was nähres dazu?
nope.

Grüße ... Kiffi
a²+b²=mc²
Antworten