Verzeichnis anlegen funktioniert nicht

Anfängerfragen zum Programmieren mit PureBasic.
BueNo
Beiträge: 16
Registriert: 06.09.2020 12:15

Verzeichnis anlegen funktioniert nicht

Beitrag von BueNo »

seit einiger Zeit, versuche ich diesen Code ans Laufen zu kriegen, klappt aber nicht:

Code: Alles auswählen

Procedure Proc_OrdnerErstellen()  
  
  Define.i ia
  
  For ia = 0 To CountGadgetItems(ListView_0)
    If GetGadgetItemState(ListView_0, ia) > 0  
      
      sa$ = GetGadgetText(ExplorerTree_0) +  GetGadgetItemText(ListView_0,ia) + "\"   ; Quellverzeichnis
      se$ = GetCurrentDirectory()
      sb$ = GetGadgetText(ExplorerTree_1) 
      Debug sb$
      SetCurrentDirectory(sb$)
      sb$ = sb$ +  GetGadgetItemText(ListView_0,ia) + "\"    ; Zielverzeichnis
      
      Proc_Dateizahl_ergaenzen(sa$)
     
      debug CreateDirectory(sb$)
          
      
    EndIf
  Next
  
EndProcedure
Das Ergebnis ist immer eine "0" und das Verzeichnis wird nicht angelegt. Kann es an Leerzeichen im Pfad liegen?
ST4242
Beiträge: 42
Registriert: 29.10.2011 16:54

Re: Verzeichnis anlegen funktioniert nicht

Beitrag von ST4242 »

Hallo,

leider ist dein Code so nicht lauffähig, aber bei betrachtung fällt mir auf, das Du am Ende noch ein "\" anhängst - dies ist zuviel.

Code: Alles auswählen

sb$ = sb$ + GetGadgetItemText(ListView_0,ia) + "\" ; Zielverzeichnis
besser

Code: Alles auswählen

sb$ = sb$ + GetGadgetItemText(ListView_0,ia);  + "\" ; Zielverzeichnis
Grüße
BueNo
Beiträge: 16
Registriert: 06.09.2020 12:15

Re: Verzeichnis anlegen funktioniert nicht

Beitrag von BueNo »

Ich habe es auch schon ohne den Backslash am Ende versucht - hat aber auch nicht funktioniert.
Benutzeravatar
mk-soft
Beiträge: 3701
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: Verzeichnis anlegen funktioniert nicht

Beitrag von mk-soft »

Beim anlegen von Verzeichnissen muss das parent Verzeichnis geben.

Quelle Bisonte

Code: Alles auswählen

Procedure.i CreateDirectoryEx(DirectoryName.s, FileAttribute = #PB_Default) ; Erstellt Verzeichnis, inklusive Übergeordnete
  
  Protected i, c, tmp.s
  
  If Right(DirectoryName, 1) = #PS$
    DirectoryName = Left(DirectoryName, Len(DirectoryName) -1)
  EndIf
  c = CountString(DirectoryName, #PS$) + 1
  For i = 1 To c
    tmp + StringField(DirectoryName, i, #PS$)
    If FileSize(tmp) <> -2
      CreateDirectory(tmp)
    EndIf
    tmp + #PS$
  Next
  
  If FileAttribute <> #PB_Default
    CompilerIf #PB_Compiler_OS = #PB_OS_Windows
      SetFileAttributes_(DirectoryName, FileAttribute)
    CompilerElse
      SetFileAttributes(DirectoryName, FileAttribute)
    CompilerEndIf
  EndIf
  
  If FileSize(DirectoryName) = -2
    ProcedureReturn #True
  EndIf
  
EndProcedure
P.S.
Alles was hinter "Debug" steht wird nicht in der fertigen EXE ausgeführt.
Also "r1 = Create..."
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Bisonte
Beiträge: 2430
Registriert: 01.04.2007 20:18

Re: Verzeichnis anlegen funktioniert nicht

Beitrag von Bisonte »

mk-soft hat geschrieben: 06.06.2022 13:24 Quelle Bisonte

Code: Alles auswählen

Procedure.i CreateDirectoryEx(DirectoryName.s, FileAttribute = #PB_Default) ; Erstellt Verzeichnis, inklusive Übergeordnete
Auch wenn ich mich geehrt fühle, so ist das Original "CreateDirectoryEx" von TS-Soft, uns Code-Commander ;)
PureBasic 6.10 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Antworten