Seite 1 von 1
suche Programm der ordner durch"listet"
Verfasst: 02.08.2006 22:42
von ChrisBa
Hallo
Leider find ich derartiges nicht in der Hilfe und daher schreib ich hier mein problem.
Ich suche einen Code der folgendes macht:
Ein bestimmten Ordner,z.B: Eigene Dateien
ich möchte dann erfahren welche Unterordner es in "Eigenen Dateien" gibt.
und dann mit einem if-code das wenn es z.B ordner X gibt,er diesen löscht.
wie sieht dieser code aus?
hab schon lange dannach gesucht aber leider gefunden

Verfasst: 02.08.2006 22:58
von ts-soft
Eigene Dateien rausfinden ist auch nicht ganz so einfach
Code: Alles auswählen
Procedure.s GetSpecialFolderPath(CSIDL.l)
Protected Path.s = Space(#MAX_PATH * SizeOf(Character))
Protected Library = OpenLibrary(#PB_Any, "shell32.dll")
If Library
CompilerIf #PB_Compiler_Unicode
CallFunctionFast(GetFunction(Library,"SHGetSpecialFolderPathW"), 0, @Path, CSIDL, 0)
CompilerElse
CallFunctionFast(GetFunction(Library,"SHGetSpecialFolderPathA"), 0, @Path, CSIDL, 0)
CompilerEndIf
CloseLibrary(Library)
EndIf
If Right(Path, 1) <> "\" : Path + "\" : EndIf
ProcedureReturn Path
EndProcedure
Debug GetSpecialFolderPath(#CSIDL_PERSONAL)
Für ältere PB Versionen mal suchen!
Für den Rest in der Hilfe nochmals unter FileSystem, im speziellem: ExamineDirectory() ansehen und das Beispiel erarbeiten, ggfs. nochmal nachfragen oder besser suchen, wurde bereits mehrmals gefragt

Verfasst: 02.08.2006 23:30
von ChrisBa
oh,da hab ich mich vielleichtetwas undeutlich ausgedrückt
mit auflisten meinte ich soetwas.
der Order C:\Programme
und das Programm soll mir dann zeigen welche Ordner in C:\Programme sind
Verfasst: 02.08.2006 23:40
von ts-soft
Haste nicht, aber das steht in den letzten beiden Zeilen. Beispiel ist in der Hilfe vorhanden.
Verfasst: 02.08.2006 23:52
von ChrisBa
versteh leider den code nicht da wenn ich das programm ausführe nur der datenort von Eigene dateien zu sehen sind,nicht aber seine unterordner
Verfasst: 03.08.2006 00:02
von Kiffi
@ChrisBa:
Um eine Ordnerstruktur mit beliebiger Tiefe zu durchlaufen, musst Du eine
Prozedur programmieren, die sich mit veränderten Parametern selber
aufruft. Sowas nennt man dann Rekursion und ist nicht gerade, ähm,
anfängergeeignet.
Wie dem auch sei: Hier ein Link zu einem Code, der Dir ausgehend von
einem Startpfad alle darunterliegenden Ordner auflistet. Ich hoffe, dass er für
Dich nicht allzu kompliziert ist und Du mit den darin enthaltenen
Kommentaren was anfangen kannst:
http://www.purebasic.fr/german/viewtopic.php?t=7263
Grüße ... Kiffi
Verfasst: 03.08.2006 00:02
von ts-soft
Der Rest steht in der Hilfe, wie oben geschrieben
Code: Alles auswählen
Procedure.s GetSpecialFolderPath(CSIDL.l)
Protected Path.s = Space(#MAX_PATH * SizeOf(Character))
Protected Library = OpenLibrary(#PB_Any, "shell32.dll")
If Library
CompilerIf #PB_Compiler_Unicode
CallFunctionFast(GetFunction(Library,"SHGetSpecialFolderPathW"), 0, @Path, CSIDL, 0)
CompilerElse
CallFunctionFast(GetFunction(Library,"SHGetSpecialFolderPathA"), 0, @Path, CSIDL, 0)
CompilerEndIf
CloseLibrary(Library)
EndIf
If Right(Path, 1) <> "\" : Path + "\" : EndIf
ProcedureReturn Path
EndProcedure
Define.s Directory = GetSpecialFolderPath(#CSIDL_PERSONAL)
If ExamineDirectory(0, Directory, "*.*")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
If DirectoryEntryName(0) <> "." And DirectoryEntryName(0) <> ".."
Debug DirectoryEntryName(0)
EndIf
EndIf
Wend
FinishDirectory(0)
EndIf
Listet im Debbuger alle Ordner von "Eigene Dateien" auf
Kannst Directory auch auf "C:" ändern, dann brauchste die obere Procedure nicht, steht aber fast 1:1 in der Hilfe, das Beispiel
Verfasst: 03.08.2006 00:08
von ChrisBa
super
vielen dank
du hast mir echt weitergeholfen