Einzelnen Beitrag anzeigen

delphifan2004

Registriert seit: 26. Nov 2004
Ort: Dresden
216 Beiträge
 
Delphi 10.3 Rio
 
#1

SysUtils.TEncoding richtig verwenden

  Alt 8. Okt 2020, 22:28
Delphi-Version: 10.3 Rio
Hallo,

ich habe im Internet von dieser Klasse erfahren und will nun mal folgendes machen:

Ich habe wie das auch im Windows API der Fall ist, eine Funktion einmal für AnsiString und einmal für WideString.

Delphi-Quellcode:
function DoSomethingWithStringA(StringA: AnsiString): <irgendein Ergebnistyp>;
begin

end;

function DoSomethingWithStringW(StringW: WideStringString): <irgendein Ergebnistyp>;
begin

end;
Nun will ich nicht den Ablauf für beide Funktionen einmal für AnsiString und einmal für WideString schreiben, sondern den AnsiString in WideString konvertieren und dann die Widestring Funktion aufrufen.

Delphi-Quellcode:
function DoSomethingWithStringA(StringA: AnsiString): <irgendein Ergebnistyp>;
begin
  //Mit TEncoding den AnsiString "SreingA" in einen Widestring konvertieren den ich hier StrConToWideStr nennen will, danach:
  DoSomethingWithStringW(StrConToWideStr); //aufrufen
end;
Das gleiche auch in die andere Richtung, falls ich den WideString an eine Funktion übergeben muss aber dann in der Funktion einen Ansistring brauche.

Delphi-Quellcode:
function DoSomethingWithStringW(StringW: WideString): <irgendein Ergebnistyp>;
begin
  //Mit TEncoding den AnsiString "SreingA" in einen AnsiString konvertieren, den ich hier StrConToAnsiStr nennen will, danach
  DoSomethingWithStringA(StrConToAnsiStr);
end;

Wie muss ich da die TEncoding Klasse anwenden. Wo gibt es da einleuchtende einfache Beispiele in Object Pascal?

Das Beispiel hier:

https://riptutorial.com/de/delphi/ex...12/kodierungen

ist mir zu kompliziert und es benutzt eine TStringList, die eine Methode SaveToFile aufweist, der ich eine TEncoding Klasse übergeben kann. Den Rest aber tut die Methode SaveToFile intern.


Dort finde ich einerseits diese Zeile:

   stringList.saveToFile('file.txt',SysUtils.TEncoding.Unicode); Hier gehe ich davon aus, dass wegen "SysUtils.TEncoding.Unicode" der String 'file.txt' in einen Unicode String konvertiert wird

   stringStream := TStringStream(hello,SysUtils.TEncoding.Unicode); Diese Typecasting Syntax ist mir völlig neu, ich gehe aber davon aus, dass hier der Strin in der Variablen "hello" in einen Unicode String verwwandelt wird.

Wie aber muss ich bei meinem Vorhaben vorgehen? Das habe ich immer noch nicht verstanden.

Wer kann mir weiter helfen?
  Mit Zitat antworten Zitat