Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   WideString -> AnsiString -> WideString verlustfrei umwandeln (https://www.delphipraxis.net/171473-widestring-ansistring-widestring-verlustfrei-umwandeln.html)

olee 7. Nov 2012 19:24

WideString -> AnsiString -> WideString verlustfrei umwandeln
 
Hi,
Ich möchte gerne genau das im Titel machen - also eine Codierung von z.B. アニメ wird kodiert zu %E3%82%A2 %E3%83%8B %E3%83%A1 usw.
Wie lässt sich sowas realisieren? Gibt es sowas vielleicht auch schon?
Ziel ist jedenfalls, WideStrings als AnsiString Daten abspeichern zu können, weil dies vom Format her vorgegeben ist.

MFG

Bummi 7. Nov 2012 19:35

AW: WideString -> AnsiString -> WideString verlustfrei umwandeln
 
Delphi-Quellcode:
var
 UCS,UCS2:WIDEString;
 ACS:AnsiString;
begin
   UCS := Edit1.Text;
   Setlength(ACS,Length(UCS)*2);
   Move(UCS[1],ACS[1],Length(UCS)*2);
   SetLength(UCS2,Length(ACS) div 2);
   Move(ACS[1],UCS2[1],Length(ACS));
   Edit2.Text := Ucs2;
end;

olee 7. Nov 2012 19:37

AW: WideString -> AnsiString -> WideString verlustfrei umwandeln
 
War auch mein erster Gedanke, jedoch werden auf diese Weise doch ungültige Ansi-Char Zeichen generiert, sodass der String nicht mehr z.B. in ner CSV etc. gespeichert werden kann...

Bummi 7. Nov 2012 19:58

AW: WideString -> AnsiString -> WideString verlustfrei umwandeln
 
Ah, Missverständnis, etwas in der Art?
Delphi-Quellcode:
Type
TByteArray=Array[0..0] of byte;

Function AsHexString(p:Pointer;cnt:Integer):String;
var
 i:Integer;
begin
   Result :='';
   for I := 0 to cnt do
     Result := Result +'$'+IntToHex(TByteArray(p^)[i],2);
end;

procedure TForm3.Button1Click(Sender: TObject);
var
 UCS:WIDEString;

begin
   UCS := Edit1.Text;
   Edit2.Text := AsHexString(@UCS[1],Length(UCS)*2 - 1);
end;

olee 7. Nov 2012 20:04

AW: WideString -> AnsiString -> WideString verlustfrei umwandeln
 
Wäre wohl eine Lösung...
Naja ich habe eben gerade herausgefunden, dass ich eventuell doch mit WideStrings arbeiten kann.
Ich probiere das ganze zur Zeit aus.

Trotzdem danke für den Vorschlag.
(so wie es aussieht gibt es UTF8Encode und UTF8Decode in Delphi, welche die Lösung wären - eben gefunden)

Bernhard Geyer 7. Nov 2012 20:12

AW: WideString -> AnsiString -> WideString verlustfrei umwandeln
 
Zitat:

Zitat von olee (Beitrag 1190218)
Trotzdem danke für den Vorschlag.
(so wie es aussieht gibt es UTF8Encode und UTF8Decode in Delphi, welche die Lösung wären - eben gefunden)

obiges Beispiel ist der URL-Encoded UTF8-8 String.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz