![]() |
"=F6" = "ö". Gibt es dafür eine Routine?
Hallo,
gibt es für die Umwandlung von "=HH" (HH=Hexwert) zum String eine Routine? Der Hexwert repräsentiert den Ansicode für den jeweiligen Buchstaben. Diese Werte werden in einer vCard (Outlook, Handy) für Sonderzeichen verwendet. |
Re: "=F6" = "ö". Gibt es dafür eine Rout
Es geht ungefähr so:
Delphi-Quellcode:
So wandelst du dein "=F6" in ein "ö" um. Das Copy ist da, um zu vermeiden, dass das "=" auch der StrToInt-Funktion übergeben wird.
MyChar := Chr(StrToInt(Copy(Code, 2, 2)))
|
Re: "=F6" = "ö". Gibt es dafür eine Rout
Hi,
für "Hex zu String" gibts IntToStr, natürlich mit einem $ vor der HexZahl (z.B. IntToStr($F6); ) Für "Code zu Buchstabe" gibts Chr (z.B. Chr(22) bzw. Chr($F6) ) Oder habsch Dich falsch verstanden? :gruebel: Gruß Stephan :dance: |
Re: "=F6" = "ö". Gibt es dafür eine Rout
Zitat:
Delphi-Quellcode:
...:cat:...
IntToStr('$F6');
|
Re: "=F6" = "ö". Gibt es dafür eine Rout
Zitat:
Gruß Stephan |
Re: "=F6" = "ö". Gibt es dafür eine Rout
Ja aber es kann auch das "=" Zeichen im Text vorkommen ohne dass eine Hexzahl dahinter stehen muss. Der einzige Hinweis darauf ist, dass in der Zeile der Text "ENCODING=QUOTED-PRINTABLE" vorkommst.
Hier mal eine Beispielzeile: N;ENCODING=QUOTED-PRINTABLE:Richter;S=F6ren |
Re: "=F6" = "ö". Gibt es dafür eine Rout
Delphi-Quellcode:
Gruß
IF POS('ENCODING=QUOTED-PRINTABLE',ZuPruefenderString)>0 THEN...
Stephan |
Re: "=F6" = "ö". Gibt es dafür eine Rout
Das ist mir schon alles klar.
Hier mein Lösungsansatz (welcher aber nicht funktioniert - der steigt bei einem Except aus der While Schleife aus):
Delphi-Quellcode:
[...] s:= Line; Line := ''; while Pos('=', s) > 0 do begin Fehler := false; i := 0; try i := StrToInt('$' + copy(s, Pos('=', s) + 1, 2)); except Fehler := true; end; if not Fehler then begin Line := Line + Copy(s, 1, Pos('=', s) - 1) + Chr(i); s := Copy(s, Pos('=', s) + 3, length(s)); end else begin Line := Line + '='; s := Copy(s, Pos('=', s) + 1, length(s)); end; end; Line := Line + s; |
Re: "=F6" = "ö". Gibt es dafür eine Rout
Hier ist ein geschwindigkeitsoptimierte Funktion dafür:
Delphi-Quellcode:
function UnEscapeString(const Value: string; EscapeChar:Char): string;
var pSrc,pSrcEnd: PChar; pDst,pDstBeg: PChar; begin SetLength(Result,Length(Value)); if Length(Result) = 0 then Exit; pSrc := @Value[1]; pSrcEnd := @Value[Length(Value)]; pDstBeg := @Result[1]; pDst := @Result[1]; while pSrc <= pSrcEnd do begin if pSrc^ = EscapeChar then begin Inc(pSrc); HexToBin(pSrc,pDst,2); Inc(pSrc,2); end else begin pDst^ := pSrc^; Inc(pSrc); end; Inc(pDst); end; SetLength(Result,pDst-pDstBeg); end; |
Re: "=F6" = "ö". Gibt es dafür eine Rout
Danke. Deine Routine funktioniert :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz