Der folgende Code geht bei mir und es wird der Debug der vorletzen Zeile ausgegeben.
Wenn man nun die letzten Zeile aktiviert und die vorletzte Zeile auskommetiert, geht es auch und man bekommt den Debug der letzten Zeile.
Wenn man aber beide Zeilen aktiviert, dann bleibt PB stehen mit der Meldung: "Warte auf den Start des Executable..."
und ich muss das Programm gewaltsam beenden.
Code: Alles auswählen
Global Dim sortiercode(256)
Global sortierung$= " !"+Chr(34)+"#$%&()*,./:;?@[\]^_`{|}~´+<=>§°0123456789"
sortierung$=sortierung$ + "aAáÁäÄbBcCdDeEéÉèÈêÊfFgGhHiIjJkKlLmMnNoOöÖpPqQrRsSßtTuUüÜvVwWxXyYzZ'-"
For i = 1 To Len(sortierung$)
sortiercode(Asc(Mid(sortierung$,i,1))) = i + 31 ; 31 dazu, damit es druckbare Zeichen werden
Next
Procedure.s ReplaceStrings(String$, StringsToFind$, StringsToReplace$, Separator$=";")
Protected n.l
For n=1 To CountString(StringsToFind$, Separator$)+1
String$=ReplaceString(String$, StringField(StringsToFind$, n, Separator$), StringField(StringsToReplace$, n, Separator$))
Next
ProcedureReturn String$
EndProcedure
Procedure Excelstringvergleich (string1.s,string2.s) ; wird von Excelvergleich aufgerufen
vergleichsergebnis=0
string1konvertiert$="" ;
string2konvertiert$=""
For scanbuchstabe = 1 To Len(string1.s)
string1konvertiert$=string1konvertiert$ + Chr(sortiercode(Asc(Mid(string1.s,scanbuchstabe,1))))
Next
For scanbuchstabe = 1 To Len(string2.s)
string2konvertiert$=string2konvertiert$ + Chr(sortiercode(Asc(Mid(string2.s,scanbuchstabe,1))))
Next
;Debug string1konvertiert$
;Debug string2konvertiert$
If string1konvertiert$ < string2konvertiert$ : vergleichsergebnis = -1 : EndIf
If string1konvertiert$ > string2konvertiert$ : vergleichsergebnis = 1 : EndIf
ProcedureReturn vergleichsergebnis
EndProcedure
Procedure Excelvergleich (string1.s,string2.s)
string1_ohnebindestrich$ = ReplaceString(string1.s, "-", "")
string2_ohnebindestrich$ = ReplaceString(string2.s, "-", "")
string1_ohnebindestrich_gross_egal$ = LCase(string1_ohnebindestrich$)
string2_ohnebindestrich_gross_egal$ = LCase(string2_ohnebindestrich$)
string1_ohnebindestrich_gross_egal_umlaute_weg$ = LCase(string1_ohnebindestrich$)
string2_ohnebindestrich_gross_egal_umlaute_weg$ = LCase(string2_ohnebindestrich$)
excelvergleichswert = Excelstringvergleich (string1_ohnebindestrich_gross_egal$,string2_ohnebindestrich_gross_egal$)
If excelvergleichswert = 0
Debug "Prüfen"
excelvergleichswert = Excelstringvergleich (string1_ohnebindestrich$,string2_ohnebindestrich$)
If excelvergleichswert = 0
Debug "Prüfen"
endergebnis = Excelstringvergleich (string1.s,string2.s)
Else ; fertig
endergebnis = excelvergleichswert
EndIf
Else ; fertig
endergebnis = excelvergleichswert
EndIf
ProcedureReturn endergebnis
EndProcedure
Eins$ = "häusTür"
Zwei$ = "HautTür"
Debug Excelvergleich (Eins$,Zwei$) ; geht alleine
;Debug ReplaceStrings(Eins$, "ä;á", "a;a") ; geht auch alleine, wenn anderer Debug auskommentiert ist
;wenn beide Debugs aktiviert sind, gibt es
;" Warte auf den Start des Executable..."