Hallo Coding Gemeinschaft,
bisher eher im Bereich Visual Basic tätig bin ich nun auf PureBasic umgestiegen. Zuerst ein dickes Lob an die Entwickler dieses Compilers.
Hat man sich an den sequentiellen Programmierstil gewöhnt, kann man sich nur noch wundern, wie einfach sich so manches Problem lösen lässt.
Die Zeitersparnis ist enorm.
Prinzipiell bin ich jedoch immer noch Anfänger, was PB betrifft.
Nun zu meinem Problem.
Also ich bin gerade dabei, das CodeArchiv von PureArea.net per PBSourceConverter zu PB4 zu konvertieren bzw. ist bereits erledigt.
Nun habe ich alle, müssen so um die 1350 Dateien sein, konvertierten Codes in einem Verzeichnis liegen. Das Codearchiv ist halt in meinem PureBasic Pfad mit den entsprechenden Unterverzeichnissen entpackt.
Zuerst habe ich angefangen die konvertierten Sources "zu Fuss" in die entsprechenden Zielverzeichnisses zu kopieren. Da bin ich bald wahnsinnig geworden bei der enormen Anzahl der verschachtelten Unterverzeichnisse.
Also dachte ich mir, schreibe ich mir doch einfach ein Proggie, was die Arbeit für mich erledigt. Um das Rad nicht nochmals zu erfinden, stiess ich bei der Lösung des Problems auf die API SearchTreeforFile.
Der Code:
OpenConsole()
Procedure.s SucheDateiinPfad(NameDatei$)
If SearchTreeForFile_("c:\program files\PureBasic\Examples\CodeArchiv",NameDatei$,Treffer$)
ProcedureReturn Treffer$
Else
MessageRequester("Information", "Gesuchte Datei konnte nicht gefunden werden.")
EndIf
EndProcedure
If ExamineDirectory(0,"c:\data","*.*")
While NextDirectoryEntry(0)
If DirectoryEntryType(0) = #PB_DirectoryEntry_File
DateiName.s = DirectoryEntryName(0)
ZielPfad.s = SucheDateiinPfad(DateiName)
If ZielPfad <> ""
CopyFile("c:\data\" + DateiName, ZielPfad)
EndIf
EndIf
Wend
FinishDirectory(0)
EndIf
CloseConsole()
End
Ob ich die Console oder den MessageRequester in der Procedure überhaupt brauche, weiss ich gar nicht.
Wenn ich das Proggie mit Debugger kompiliere bekomme ich die Fehlermeldung: "Invalid memory access" bei der Zeile "If SearchTreeforFile...."
Ich vermute mal, dass ich die API falsch benutze.
Weiss jemand, wie es richtig geht? (Man lernt ja schliesslich nie aus)
Für konstruktive Kritik immer dankbar
Gruss Michael
API: SearchTreeforFile ergibt "Invalid Memory Access&qu
API: SearchTreeforFile ergibt "Invalid Memory Access&qu
Lieber unheimlich heimlich, als heimlich unheimlich
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
War ich zu langsam
Damit Windows was in den OutPathBuffer schreiben kann, sollte man dort
erstmal Platz schaffen
Wenn in der API-Hilfe [out] steht, bzw. wenn sie einen String in einem
Parameter zurückgibt, ist dies immer erforderlich.

Damit Windows was in den OutPathBuffer schreiben kann, sollte man dort
erstmal Platz schaffen

Wenn in der API-Hilfe [out] steht, bzw. wenn sie einen String in einem
Parameter zurückgibt, ist dies immer erforderlich.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Setz doch mal bei den Messagerequestern eine der #MB_* Konstanten (auch aus der API) ein. Diese findest du, wenn du nach der API Funktion MessageBox() suchst.
Hier sind einige:
#MB_ICONQUESTION
#MB_ICONERROR
#MB_ICONINFORMATION
#MB_ICONEXCLAMATION
und...?
SImpel, aber effektiv
Hier sind einige:
#MB_ICONQUESTION
#MB_ICONERROR
#MB_ICONINFORMATION
#MB_ICONEXCLAMATION
und...?

SImpel, aber effektiv
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End