Verfasst: 08.07.2007 22:44
@Stargate
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.
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