AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeichenkonvertierung TEncoding

Ein Thema von BenB · begonnen am 17. Mär 2014 · letzter Beitrag vom 17. Mär 2014
 
BenB

Registriert seit: 17. Mär 2014
3 Beiträge
 
#1

Zeichenkonvertierung TEncoding

  Alt 17. Mär 2014, 00:34
Hallo,
leider habe ich bisher kein Thema gefunden was mir bis jetzt wirklich geholfen hat.

In der Delphi XE5 habe ich folgendes Problem:
Ich habe eine Anwendung die Strigs über eine TCP-Verbindung an eine Gegenstelle schickt. Ich habe das ganze so gehalten, dass ich die Strings ohne Probleme mit der TEncoding Klasse konvertieren und über die Leitung schicken kann. Alles kein Problem solange beide Seiten die gleiche Konvertierung nutzen (ASCII, UTF8 etc.). Das ganze wird Dynamisch zur Laufzeit je nach Konfiguration geschaltet.

Jetzt habe ich das Problem mit Abwärtskompatibilitäten. Wenn ich Zeichen in den Strings habe und diese nicht in der Codepage der Gegenstelle existieren, weil diese z.B. nur ASCII bis 127 kann, kommt bei einem Zeichen wie z.B. 'Ö' nur Datenmüll rüber.

Ich würde diese Zeichen dann gerne, je nach Encoding, durch die Form '<183>' ersetzen. Dies kann auf der Gegenstelle später umgesetzt werden. Ich habe leider keine andere Möglichkeit sonst die Gegenstelle anzupassen, da es nicht mein Programm ist und ich es nicht ersetzen kann. Gibt es einen eleganteren Weg als Fix die Nummer pro Codec abzufragen?

Ich würde es in etwa so gestalten wollen:
Die Hilfen im Netz oder von Delphi selbst konnten mir keine wirkliche Hilfe dazu liefern.
Delphi-Quellcode:
function ConvertStr(const sInput: string): string;
var
  lTmpStr: string;
  i: integer;
  lCharInt: integer;
  ch: char;
begin
  Result := '';
  lTmpStr := '';
  if sInput<>'then
  begin
      for i := 1 to length(sInput) do
      begin
        ch := sInput[i];
        lCharInt := integer(ch);
        //if ch>=TEncoding.GetEncoding(_ZielEncoding)."Maximaler Integerwert für Chars" then //<--Hier eine Maximale Gültiger Wert für eine Nummer
        if ch >= #127 then //hier anstatt hard zu encoden für z.B Ascii
          lTmpStr := lTmpStr + '<' + IntToStr(z) + '>'
        else
          lTmpStr := lTmpStr + ch;
      end;
  end;
  Result := lTmpStr;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:54 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 by Thomas Breitkreuz