CreateDirectory() Problem!

Anfängerfragen zum Programmieren mit PureBasic.
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

CreateDirectory() Problem!

Beitrag von PMTheQuick »

Hi,

ich habe ein Problem... Ich habe viele Tilesets, die ich in einzelne Bitmaps teilen soll... Jetzt habe ich zum Beispiel folgende Datei:

036-Shop01.png

Dieser Code sollte jetzt eine "Shop1" anlegen...

Code: Alles auswählen

name$ = ProgramParameter()
stelle = FindString(name$,"-",0)
stelle2 = FindString(name$,".",stelle)
dirname$ = Mid(name$, stelle+1, stelle2-stelle-1) 
dirname$ = ReplaceString(dirname$,"0","")
OpenConsole()
PrintN(Str(CreateDirectory(dirname$)))
PrintN(dirname$)
Input()
Zuerst löscht es XXX und den -, dann alles ab dem .... In der Variable dirname$ steht dann (kann man prüfen) Shop1... Der CreateDirectory Befehl ist das Problem... bei Town1 gibt er eine 0 zurück! Bei Ruins1 gibt er eine 1 zurück, aber ein Ordner wird nicht angelegt??? :? Zum testen: legt eine leere "036-Shop01.bmp" z.B. an, compiliert eine Exe und zieht die bmp drauf... Geht nicht ...

Gruss
PMTheQuick ;)

EDIT: Es wird noch komischer... Mit diesem Code:

Code: Alles auswählen

name$ = "036-Shop01.png" ;ProgramParameter()
stelle = FindString(name$,"-",0)
stelle2 = FindString(name$,".",stelle)
dirname$ = Mid(name$, stelle+1, stelle2-stelle-1) 
dirname$ = ReplaceString(dirname$,"0","")
OpenConsole()
PrintN(Str(CreateDirectory(dirname$)))
PrintN(dirname$)
Input()
Spreche ich die Datei direkt an... UND! Es geht :?

EDIT2: Noch was rausgefunden... Wenn ich die Datei nicht drauf ziehe, sondern per Console/Batch angebe als Parameter, geht es ebenfalls? Aber warumn geht nicht das draufziehen??? :?

EDIT3: Mit GetLastErrorMsg ergibt folgendes:

Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist.

:?
KeyPusher
Beiträge: 52
Registriert: 04.10.2006 10:56

Beitrag von KeyPusher »

hab folgendes festgestellt:
1. beim drauf ziehen einer datei auf dein programm wird der komplette pfad+dateinamen übergeben. das könnte zu problemen führen, wenn im pfad ein '-' ist.
2. beim drauf ziehen ist das aktuelle arbeitsverzeichniss für dein programm das 'C:\Dokumente und Einstellungen\user' verzeichniss. das ist zu mindestens bei mir und xp so. das heisst, der neue ordner wird dort erstellt.

abhilfe könnte man so schaffen:

Code: Alles auswählen

OpenConsole()

name$ = ProgramParameter();"036-Shop01.png" 
name$=GetFilePart(name$)

PrintN("Filename = "+name$)

SetCurrentDirectory(GetPathPart(ProgramFilename()))
PrintN("Aktuelles Verzeichniss = "+GetCurrentDirectory())

stelle = FindString(name$,"-",0)
stelle2 = FindString(name$,".",stelle)
dirname$ = Mid(name$, stelle+1, stelle2-stelle-1)
dirname$ = ReplaceString(dirname$,"0","")

PrintN(dirname$)
PrintN(Str(CreateDirectory(dirname$)))

Input()

CloseConsole()
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Thanks! Danke! Merci! :mrgreen:
Funktioniert perfekt!

Gruss
PMTheQuick ;)
Antworten