Seite 1 von 1

Verzeichnis anlegen funktioniert nicht

Verfasst: 06.06.2022 11:56
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?

Re: Verzeichnis anlegen funktioniert nicht

Verfasst: 06.06.2022 12:04
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

Re: Verzeichnis anlegen funktioniert nicht

Verfasst: 06.06.2022 12:52
von BueNo
Ich habe es auch schon ohne den Backslash am Ende versucht - hat aber auch nicht funktioniert.

Re: Verzeichnis anlegen funktioniert nicht

Verfasst: 06.06.2022 13:24
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..."

Re: Verzeichnis anlegen funktioniert nicht

Verfasst: 06.06.2022 23:57
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 ;)