über folgenden Code lese ich eine Datei:
Code: Alles auswählen
OpenFile(1, "C:\users\joel\desktop\test.txt")
string$ = ReadString(1, #PB_Ascii)
Debug string$
Code: Alles auswählen
Caption = 'test1, test2, St'#228'rke'
Gruß Joel
Code: Alles auswählen
OpenFile(1, "C:\users\joel\desktop\test.txt")
string$ = ReadString(1, #PB_Ascii)
Debug string$
Code: Alles auswählen
Caption = 'test1, test2, St'#228'rke'
ja, mit ReplaceString().Joel hat geschrieben:Geht das`?
Code: Alles auswählen
Procedure.s ReplaceAsciiNum(s.s)
Protected *p.Character = @s ; *p = Pointer zum String s.s
Protected retString.s, num.s
While *p\c
If *p\c = 39 ; ' gefunden
*p + SizeOf(Character)
If *p\c = '#' ; '# gefunden
*p + SizeOf(Character)
num.s = ""
While *p\c And *p\c <> 39 ; zahl lesen bis wieder ' gefunden
If *p\c >= '0' And *p\c <= '9'
num + Chr(*p\c)
Else
; illegal input error, keine zahl
EndIf
*p + SizeOf(Character)
Wend
If *p\c = 39
*p + SizeOf(Character) ; ' nach zahl entfernen
EndIf
retString + Chr(Val(num)) ; ASCII-Zahl an retString anhängen
Continue
Else ; '...
retString + Chr(39)
Continue
EndIf
Else
retString + Chr(*p\c) ; andere chars einfach an retString anhängen
EndIf
*p + SizeOf(Character)
Wend
ProcedureReturn retString
EndProcedure
string$ = "Caption = 'test1, test2, St'#228'rke'"; ReadString(1, #PB_Ascii)
Debug string$
Debug ReplaceAsciiNum(string$)
Code: Alles auswählen
Procedure.s MyReplace(String$)
For i = 1 To 255
String$ = ReplaceString(String$, "'#" + Str(i) + "'", Chr(i))
Next
ProcedureReturn String$
EndProcedure
string$ = "Caption = 'test1, test2, St'#228'rke'"
Debug string$
Debug MyReplace(string$)
Ja, das könnte für Anfänger eventuell leichter zu verstehen sein.Sunny hat geschrieben:Ähm... kann sein das ich was wichtiges übersehe aber so macht es sich doch viel leichter oder?
Code: Alles auswählen
Procedure.s MyReplace(String$) For i = 1 To 255 String$ = ReplaceString(String$, "'#" + Str(i) + "'", Chr(i)) Next ProcedureReturn String$ EndProcedure string$ = "Caption = 'test1, test2, St'#228'rke'" Debug string$ Debug MyReplace(string$)
Code: Alles auswählen
Procedure.s ReplaceAsciiNum_(s.s)
Protected num.s, z.s, l.b, FoundPosS.l, FoundPosE.l
Repeat
FoundPosS+1
FoundPosS = FindString(s, Chr(39)+ "#", FoundPosS) ; '# als Startmarkierung suchen
FoundPosE = FindString(s, Chr(39), FoundPosS+2) ; ' als Endemarkierung suchen
num.s = Mid(s, FoundPosS+2, FoundPosE-FoundPosS-2) ; nur ASCII-Zahl holen ('228')
l= Len(num) ; Nur 1,2 oder 3 Stellen machen Sinn
If l>0 And l<4
z=Chr(Val(num)) ; ASCII-Zahl ('228') in ASCII-Zeichen ('ä') wandeln
s=ReplaceString(s, Mid(s, FoundPosS, FoundPosE-FoundPosS+1), z ,#PB_String_NoCase, FoundPosS)
EndIf
Until FoundPosS=0
ProcedureReturn s
EndProcedure
string$ = "Caption = 'test1, test2, St'#228'rke, B'#252'cher'"; ReadString(1, #PB_Ascii)
Debug string$
Debug ReplaceAsciiNum_(string$)