Der Code läuft jetzt auch unter PB4.02. Allerdings war durch den fehlenden FakeEndSelect in der 4.02 einige anpassungen nötig.
BTW:
Ich habe zur anpassung Gosub & Return rausgenommen und (notgedrungen)
durch ein Goto ersetzt. Normalerweise würde ich selbst sowas
nie machen, (Goto, Gosub & Return ist nicht so mein ding) habe
mich aber mal kurz deinen stil angepasst, da es auf anhieb die
schnellste Lösung war.
BTW2:
Die Originalzeilen die geändert wurden habe ich zur besseren übersicht
einkommentiert.

Code: Alles auswählen
; Converted by PBSourceConverter on 08.07.2007 / 22:17
Global Only, Space
Procedure Aus(String$)
Restore Aus
Read Str$
While Str$
If FindString(String$, Str$, 1)
Gefunden = 1
If Str$ = " EndSelect " And Only
Only - 1
EndIf
EndIf
Read Str$
Wend
ProcedureReturn Gefunden
EndProcedure
Procedure Ein(String$)
Restore Ein
Read Str$
While Str$
If FindString(String$, Str$, 1)
Gefunden = 1
If Str$ = " Select " And Only
Only + 1
EndIf
EndIf
Read Str$
Wend
ProcedureReturn Gefunden
EndProcedure
Procedure Mitte(String$)
Restore Mitte
Read Str$
While Str$
If FindString(String$, Str$, 1)
Gefunden = 1
EndIf
Read Str$
Wend
ProcedureReturn Gefunden
EndProcedure
Procedure Only(String$)
Restore Only
Read Str$
While Str$
If FindString(String$, Str$, 1)
Gefunden = 1
EndIf
Read Str$
Wend
ProcedureReturn Gefunden
EndProcedure
Procedure DesktopX()
ProcedureReturn GetSystemMetrics_(0)
EndProcedure
Procedure DesktopY()
ProcedureReturn GetSystemMetrics_(1)
EndProcedure
OpenWindow(1, DesktopX()/2-200, DesktopY()/2-50, 400, 60, "Automatische Einrücküberarbeitung", #PB_Window_SystemMenu)
SetGadgetFont(#PB_Default,LoadFont(1,"Arial Fett",8))
CreateGadgetList(WindowID(1))
TextGadget(1, 5, 9, 50, 20, "Datei:", #PB_Text_Right)
StringGadget(2, 60, 5, 300, 20, "")
ButtonGadget(3, 365, 5, 30, 20, "...")
ProgressBarGadget(4, 5, 35, 290, 20, 0, 290, #PB_ProgressBar_Smooth)
ButtonGadget(5, 300, 35, 95, 20, "Start")
DisableGadget(5,1)
loop:
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case 2
FileName$ = GetGadgetText(2)
If FileName$
DisableGadget(5,0)
Else
DisableGadget(5,1)
EndIf
Case 3
FileName$ = OpenFileRequester("", "*.*", "*.pb", 0)
SetGadgetText(2, FileName$)
If FileName$
DisableGadget(5,0)
Else
DisableGadget(5,1)
EndIf
Case 5
DisableGadget(5,1)
DisableGadget(3,1)
DisableGadget(2,1)
If FileName$
Break
; FakeEndSelect
; Gosub Umschreiben
EndIf
DisableGadget(3,0)
DisableGadget(2,0)
SetGadgetState(4, 0)
EndSelect
EndSelect
ForEver
Umschreiben:
Space = 0
Only = 0
If ReadFile(1, FileName$)
If CreateFile(2, FileName$+".pb")
Repeat
If Random(10) :
Loc = Int(Loc(1)/Lof(1)*290)
SetGadgetState(4, Loc)
WindowEvent()
EndIf
StringEcht$ = Trim(ReadString(1))
;Kommentare
Pos = FindString(StringEcht$, ";", 1)
If Pos
String$ = Mid(StringEcht$,1, Pos-1)
Else
String$ = StringEcht$
EndIf
;String
x = 1 : k = 0 :
Repeat
x = FindString(String$, Chr(34), x)
If x
If k
String$ = Mid(String$, 1, xSave-1)+Mid(String$, x+1, Len(String$))
x + 1
Else
xSave = x
x + 1
EndIf
k = 1-k
EndIf
Until x = 0
String$ = " "+String$+" "
;Bearbeitung I
If Aus(String$) :
Space - 1
If Ein(String$) :
Space + 1
EndIf
Else
If Mitte(String$) :
Space - 1
EndIf
EndIf
If Only(String$) And Only :
Only - 1
EndIf
;Einbauen
WriteStringN(2,Space(Space)+Space(Only)+StringEcht$)
;Bearbeitung II
If Ein(String$) :
Space + 1
If Aus(String$) :
Space - 1
EndIf
Else
If Mitte(String$) :
Space + 1
EndIf
EndIf
If Only(String$) :
Only + 1
EndIf
Until Eof(1)
CloseFile(2)
F = MessageRequester("Info", "Datei wurde erfolgreich bearbeitet."+Chr(10)+"Datei jetzt öffnen ?", #PB_MessageRequester_YesNo)
If F = 6
RunProgram(FileName$+".pb", "",GetPathPart(FileName$+".pb"), 0)
EndIf
EndIf
CloseFile(1)
Else
MessageRequester("Fehler", "Datei konnte nicht geöffnet werden!", 0)
EndIf
DisableGadget(3,0)
DisableGadget(2,0)
SetGadgetState(4, 0)
Goto loop
;Return
DataSection
Aus:
Data.s " EndIf ", " CompilerEndIf ", " Wend ", " Until ", " ForEver ", " Next ", " EndSelect ", " EndStructure ", " EndProcedure ", ""
Ein:
Data.s " If ", " CompilerIf ", " While ", " Repeat ", " For ", " Select ", " Structure ", " Procedure ", " Procedure.", ""
Mitte:
Data.s " Else ", " ElseIf ", ""
Only:
Data.s " Case ", " Default ", ""
EndDataSection