Hi ts soft und mk soft, hi all.
Erstmal vielen Dank besonders für die tollen Beispiele.
Das mit den Thread muß ich erstmal verdauen, das wird ein Weile dauern.
Das Timercallback Beispiel hat mein "Problem" gelöst und ich kann nun wieder mit waitwindowsevent() arbeiten, echt super. !!!
Da mein Code durcheinandergekommen ist, habe ich ein macheschön Programm entworfen. ( Zeilenausrichten , tabs , leere löschen )
Vielleicht kann das der Eine oder Andere auch gebrauchen , ist aber ohne Gewähr, der Quellcode wird nicht verändert am Ende sollte 0 rauskommen sonst mist !!.

.
Code: Alles auswählen
StandardFile$ = "C:\"
Pattern$ = "PureBasic (*.pb)|*.pb|"
Pattern = 0
File$ = OpenFileRequester("Bitte Datei zum Laden auswählen", "", Pattern$, Pattern)
If File$
plus.s = UCase("Macro Structure If For Repeat Select Procedure while procedure.s ")
minus.s = UCase("EndMacro EndStructure EndIf Next Until EndSelect EndProcedure wend ")
plmi.s = "ELSE CASE "
Ergebnis = CopyFile(File$, File$+".bak")
Ergebnis = ReadFile(1, file$+".bak")
Ergebnis = OpenFile(2, file$+".txt")
nr = 0
line=0
While Eof(1) = 0 And nr<100
st.s = ReadString(1)
st2.s=""
For ghj=1 To Len(st)
ze.s=Mid(st,ghj,1)
If Asc(ze)>31
st2=st2+ze
Else
st2=st2+" "
EndIf
Next ghj
st=st2
line = line +1
up.s = UCase(st)
pl = 0
mi = 0
pm = 0
remz = 0
If Trim(st) ="" ;
; Debug "Leer "+st
remz =1
EndIf
If remz = 0
For g= 1 To CountString(plus," ")
sn.s= StringField(plus,g," ")
For h=1 To CountString(up," ")+1
snsn.s= StringField(up,h," ")
If Left(snsn,1)=";" : h=1000 : EndIf
If snsn = sn
pl=1
Debug Str(line)+" "+Str(nr)+" + "+LSet(" ",nr)+"."+LTrim(st)
EndIf
Next h
Next g
For g= 1 To CountString(minus," ")
sn= StringField(minus,g," ")
For h=1 To CountString(up," ")+1
snsn.s= StringField(up,h," ")
If Left(snsn,1)=";" : h=1000 : EndIf
If snsn = sn
mi=1
Debug Str(line)+" "+Str(nr)+" - "+LSet(" ",nr-2)+"."+LTrim(st)
EndIf
Next h
Next g
For g= 1 To CountString(plmi," ")
sn= StringField(plmi,g," ")
For h=1 To CountString(up," ")+1
snsn.s= StringField(up,h," ")
If Left(snsn,1)=";" : h=1000 : EndIf
If snsn = sn
Debug Str(line)+" "+Str(nr)+" * "+LSet(" ",nr-2)+"."+LTrim(st)
pm=1
EndIf
Next h
Next g
EndIf
If mi=1 Or pm= 1
nr=nr -2
If pl=1
nr=nr +2
pl=0
pm=0
EndIf
EndIf
If remz=0
WriteStringN(2,LSet(" ",nr)+LTrim(st))
EndIf
If pl=1 Or pm= 1
nr=nr +2
EndIf
Wend
CloseFile(1)
CloseFile(2)
EndIf
Debug "Ergebnis = " Str(line)+" "+Str(nr)
Sorry für meine Faulheit bei ein paar Zeilen... UCASE H=1000
Sicherlich kann man einiges noch Verbessern...
Viele Grüße und einen "guten Rutsch" ins neue Jahr.
Willi