AGB  ·  Datenschutz  ·  Impressum  







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

Unicode + BASE64?

Ein Thema von blackdrake · begonnen am 20. Aug 2007 · letzter Beitrag vom 27. Aug 2007
 
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#31

Re: Unicode + BASE64?

  Alt 26. Aug 2007, 19:00
Hallo Daniel,

ohne direkt auf API-Calls zurück zu greifen kannst du die beiden String-Typen wechselseitig so interpretieren:

Delphi-Quellcode:
// Hallo Olli - sieht ähnlich aus wie bei dir in #34!

function StringAsWideString(s: string): WideString;
begin
  SetLength(Result, Length(s) div SizeOf(WideChar));
  Move(s[1], Result[1], Length(s));
end;

function WideStringAsString(ws: WideString): string;
begin
  SetLength(Result, Length(ws) * SizeOf(WideChar));
  Move(ws[1], Result[1], Length(Result));
end;
Weil bei jeder Delphi-Funktion, die mit API String-Funktionen implementiert ist, bei NUL-Zeichen das Ende (C Konvention) eines Strings erkennt, ist tatsächlich der Weg über UTF-8 (das ist es was Bernhard dir mitteilen wollte) der schmerzfreiere:

Delphi-Quellcode:
var
  s: string;
  u: string;
  ws: WideString;

begin
  // to memphis
  s := 'Der King läbt!';
  u := AnsiToUtf8(s);
  ws := Utf8Decode(u);
  // and back
  u := Utf8Encode(ws);
  s := Utf8ToAnsi(u);
Hierbei treten keine Unverträglichkeiten auf.

Wenn du Strings in eine Datei schreibst, dann empfiehlt sich statt der Terminierung die vorgestellte Längenangabe. So können persistente Strings wesentlich effektiver verarbeitet werden.

Dein Thread ist etwas lang geraten und es kann sein, dass ich in der Mitte öfter den Faden verloren habe. Wegen etwaiger Redundanzen bitte nicht schimpfen.

Grüße vom marabu

PS: Bevor mein Beitrag völlig veraltet ist schicke ich ihn mal ab und lese dann den von Olli...
  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 06:26 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