Thema: Delphi Unicode + BASE64?

Einzelnen Beitrag anzeigen

blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#25

Re: Unicode + BASE64?

  Alt 25. Aug 2007, 20:48
Ich probiere jetzt schon seit 3:30h alle verschiedenen Varianten rum und nichts funktioniert Mir fällt bald mein Abendessen aus dem Gesicht.

UTF8 hab ich auch schon probiert, auch negativ

Ich habe für die Verschlüsselungsfunktion auch ein Gegenstück entwickelt, doch dann herausgefunden, dass der Entschlüsselungskern nur Strings nehmen will.

Desweiteren habe ich herausgefunden, dass meine Funktion nicht geht:

Delphi-Quellcode:
function WideStringToDoubleLongString(UnicodeStr: WideString): string;
var
  ByteArray: Array of Char;
  PWC: PWideChar;
begin
  SetLength(ByteArray, Length(UnicodeStr) * sizeof(WideChar));
  PWC := PWideChar(UnicodeStr);
  CopyMemory(@ByteArray[0], @PWC, Length(UnicodeStr) * sizeof(WideChar));
  result := string(ByteArray);
end;

function ReadNullTerminatedWideString(const Stream: TStream): WideString;
var
  S: WideString;
  WC: WideChar;
begin
  S := '';
  repeat
    Stream.ReadBuffer(WC, 2);
    if (WC <> #0) then
      S := S + WC;
  until WC = #0;
  Result := S;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  test: TFileStream;
  ws: widestring;
  s: string;
begin
  test := TFileStream.Create('c:\uni.txt', fmOpenRead or fmShareDenyNone);
  ws := ReadNullTerminatedWideString(test);
  s := WideStringToDoubleLongString(ws);
  test.free;

  deletefile('c:\uni2.txt');
  test := TFileStream.Create('c:\uni2.txt', fmCreate);
  test.writebuffer(s, length(s));
  test.free;
end;
Dieser Code soll einfach nur uni.txt (42 Byte) mit Inhalt

testこれはちょうどテストであtest[null][null]

nach uni2.txt "kopieren". Erst wenn dies Funktioniert, kann ich weiter machen.

Die Größe der Ausgabedatei uni2.txt stimmt. Es sind 40 Byte (keine Null-Terminierung, deswegen nicht 42). Aber der Inhalt stimmt nicht:

ꡈí渊C๰ê拯B揭B๰ê椂C

Weiß denn niemand, wie ich die Inhalte eines WideStrings vorrübergehend in einen String lagern kann?

Gruß
blackdrake
Daniel Marschall
  Mit Zitat antworten Zitat