Folgendes ist mir heute aufgefallen.
Gegeben sei folgende Zeichenkette die sich in der Variablen cREC befindet:
Die Funktion ist folgendermaßen aufgebaut:
Alles anzeigen
Die Abfrage lautet folgendermaßen:
SMS_Pos1 = Instr(pStartPos , cREC , "{034}")
Die Version 2081 liefert richtig
P0:1 / P1:17 / P2:26
Die neue Version 2082 liefert aber falsch
P0:1 / P1:0
findet also den Charakter 34 (das Anführungszeichen) nicht im String.
Als Workaround habe ich aktuell
fS = Chr(34)
SMS_Pos1 = Instr(pStartPos , cREC , fS)
dann liefert auch die Version 2082 die korrekte Position.
Eine Anmerkung noch, nicht verwirren lassen, die oben angegeben zurückgelieferten Positionen stimmen, da im zu durchsuchenden String auch noch Steuerzeichen (CRLF) enthalten sind die ja auch mitgezählt werden!
Gegeben sei folgende Zeichenkette die sich in der Variablen cREC befindet:
Die Funktion ist folgendermaßen aufgebaut:
BASCOM-Quellcode
- Function CheckSMSpos(ByVal pStartPos As Byte) As Byte
- Local fS As String * 1
- fS = Chr(34)
- Incr pStartPos
- print #2 , "P0:" ; str(pStartPos);
- If pStartPos <> 0 Then
- SMS_Pos1 = Instr(pStartPos , cREC , "{034}")
- print #2 , " / P1:" ; str(SMS_Pos1);
- If SMS_Pos1 <> 0 Then
- Incr SMS_Pos1
- SMS_Pos2 = Instr(SMS_Pos1 , cREC , "{034}")
- print #2 , " / P2:" ; str(SMS_Pos2);
- If SMS_Pos2 = 0 Then
- SMS_Pos1 = 0
- End If
- End If
- Else
- SMS_Pos2 = 0
- End If
- print #2 , ""
- print #2 , cREC
- If SMS_Pos1 = 0 Or SMS_Pos2 = 0 Then
- CheckSMSpos = 0
- Else
- CheckSMSpos = 1
- End If
- End Function
Die Abfrage lautet folgendermaßen:
SMS_Pos1 = Instr(pStartPos , cREC , "{034}")
Die Version 2081 liefert richtig
P0:1 / P1:17 / P2:26
Die neue Version 2082 liefert aber falsch
P0:1 / P1:0
findet also den Charakter 34 (das Anführungszeichen) nicht im String.
Als Workaround habe ich aktuell
fS = Chr(34)
SMS_Pos1 = Instr(pStartPos , cREC , fS)
dann liefert auch die Version 2082 die korrekte Position.
Eine Anmerkung noch, nicht verwirren lassen, die oben angegeben zurückgelieferten Positionen stimmen, da im zu durchsuchenden String auch noch Steuerzeichen (CRLF) enthalten sind die ja auch mitgezählt werden!