![]() |
Delphi-Version: 10.3 Rio
SysUtils.TEncoding richtig verwenden
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:
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.
function DoSomethingWithStringA(StringA: AnsiString): <irgendein Ergebnistyp>;
begin end; function DoSomethingWithStringW(StringW: WideStringString): <irgendein Ergebnistyp>; begin end;
Delphi-Quellcode:
Das gleiche auch in die andere Richtung, falls ich den WideString an eine Funktion übergeben muss aber dann in der Funktion einen Ansistring brauche.
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;
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: ![]() 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:
Delphi-Quellcode:
Hier gehe ich davon aus, dass wegen "SysUtils.TEncoding.Unicode" der String 'file.txt' in einen Unicode String konvertiert wird
stringList.saveToFile('file.txt',SysUtils.TEncoding.Unicode);
Delphi-Quellcode:
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.
stringStream := TStringStream(hello,SysUtils.TEncoding.Unicode);
Wie aber muss ich bei meinem Vorhaben vorgehen? Das habe ich immer noch nicht verstanden. Wer kann mir weiter helfen? |
AW: SysUtils.TEncoding richtig verwenden
Warum willst du dafür TEncoding verwenden? Der Compiler wandelt automatisch zwischen den Codierungen um, wirft allerdings standardmäßig eine Warnung dazu aus.
Folgendes sollte also funktionieren:
Delphi-Quellcode:
var
A: AnsiString; W: WideString; begin A := 'Hello'; W := 'World'; DoSomethingWithStringA(A); DoSomethingWithStringA(W); DoSomethingWithStringW(A); DoSomethingWithStringW(W); end; |
AW: SysUtils.TEncoding richtig verwenden
Implizite Castst wurden schon gezeigt.
Alternativ kann man auch explizit Casten, wenn man die Warnung "gezielt" loswerden möchte oder wenn man es braucht, um z.B. bei überladenen Methoden eine Bestimmte auszuhählen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 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