Ich habe mal die Source adaptiert von H. Bill für mich.
Ich hoffe, dass ich im Allgemeinen nichts übersehen habe, solange ich die Prozedur nicht ansprechen möchte, klappt so weit alles denke ich.
Aber sobald die Prozedur ins Spiel kommt, gibt es folgende Error Meldung:
Dies habe ich als Effekt, auch wenn ich über die vorgeschlagene Version von Axolotl gehe.[19:48:02] [COMPILER] Zeile 6: Eine Prozedur kann nicht innerhalb von If, Repeat, While oder For deklariert werden.
Ich bin da unsicher, ob ich etwas Falsch mache oder ob diese Auslegung korrekt ist.
Resp. Ob diese Error Meldung in früheren Version PB nicht war.
Andernfalls bin ich immer noch am Anfang meiner Bemühungen.
Herzliche Grüsse & hoffentlich sind alle Gut in die Woche gestartet
Christian
Adaption aus der Vorlage von H. Bill:
Code: Alles auswählen
;= GUI Test for the procedure createpatch.pbi and patchit.pbi
;- Top
; -----------------------------------------------------------------------------
; Name: myPatch app
; Description: GUI & patch maker + patcher
; Author: Christian & all of the PureBasic Forum
; Date: 2024-08-27
; Version: Alpha 9
; PB-Version: 6.11
; OS: WIN 11
; Credit:
; Forum:
; Created by: H. Bill & Axolotl & HeX0R
; -----------------------------------------------------------------------------
Enumeration Gadgets
#Str_Source_DIR
#Str_Target_DIR
#Str_Patch_DIR
EndEnumeration
Global Pattern$ ;- Auswahl welcher Dateien verwendet werden
Global File1$ ;- Source Datei für den Patch
Global File2$ ;- Target Datei für den Patch
Global File3$ ;- Patch Datei himself
Global InitialPath1$ ;- Welches verzeichnis für Source und Target
Global InitialPath2$ ;- Welches verzeichnis für Source und Target
Global InitialPath3$ ;- Welches Verzeichnis für den Patch himself
;- Define
Define Pattern
Procedure ButtonHandler()
;Debug "Button click event on gadget #" + EventGadget()
; wenn man hier den EventGadget mit EventGadget() ermittelt und mit If... abfragt,
; hat man eine Universal-Procedure für alle anfallenden Button-Gadgets
If EventGadget() = 2
InitialPath1$ = "C:\Users\cschaer\Documents\my Basic\PureBasic\source.txt" ; anfänglichen Pfad für die Anzeige festlegen (kann auch leer sein)
Pattern$ = "executable (*.exe;*.dll)|*.exe;*.dll|Alle Dateien (*.*)|*.*"
Pattern = 0 ; wir verwenden den ersten von drei möglichen Pattern als Standard
File1$ = OpenFileRequester("Bitte Datei zum Laden auswählen", InitialPath1$, Pattern$, Pattern)
SetGadgetText(#Str_Source_DIR, File1$)
ElseIf EventGadget() = 3
InitialPath2$ = "C:\Users\cschaer\Documents\my Basic\PureBasic\target.txt" ; anfänglichen Pfad für die Anzeige festlegen (kann auch leer sein)
Pattern$ = "executable (*.exe;*.dll)|*.exe;*.dll|Alle Dateien (*.*)|*.*"
Pattern = 0 ; wir verwenden den ersten von drei möglichen Pattern als Standard
File2$ = OpenFileRequester("Bitte Datei zum Laden auswählen", InitialPath2$, Pattern$, Pattern)
SetGadgetText(#Str_Target_DIR, File2$)
DisableGadget(4, #False) ;<--
ElseIf EventGadget() = 4
InitialPath3$ = "C:\Users\cschaer\Documents\my Basic\PureBasic\my Patch\new\patch.csp" ; anfänglichen Pfad für die Anzeige festlegen (kann auch leer sein)
Pattern$ = "executable (*.exe;*.dll)|*.exe;*.dll|Alle Dateien (*.*)|*.*"
Pattern = 1 ; wir verwenden den ersten von drei möglichen Pattern als Standard
File3$ = OpenFileRequester("Bitte Datei zum Laden auswählen", InitialPath3$, Pattern$, Pattern)
SetGadgetText(#Str_Patch_DIR, File3$)
IncludeFile "createpatch.pbi"
; DisableGadget(#Btn_Execute, #True) ;<--
EndIf
; SetGadgetState(2, CountGadgetItems(2))
EndProcedure
OpenWindow(0, 100, 100, 500, 400, "Click test", #PB_Window_SystemMenu)
StringGadget(#Str_Source_DIR, 8, 30, 306, 20, File1$, #PB_String_ReadOnly) ;- Datei DIR
StringGadget(#Str_Target_DIR, 8, 50, 306, 20, File2$, #PB_String_ReadOnly) ;- Datei DIR
StringGadget(#Str_Patch_DIR, 8, 80, 306, 20, File3$, #PB_String_ReadOnly) ;- Datei DIR
DisableGadget(4, #True) ;<--
ButtonGadget(2, 10, 200, 180, 30, "Source-File")
BindGadgetEvent(2, @ButtonHandler())
ButtonGadget(3, 10, 250, 180, 30, "Target File")
BindGadgetEvent(3, @ButtonHandler())
ButtonGadget(4, 10, 300, 180, 30, "Patch File")
BindGadgetEvent(4, @ButtonHandler())
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow