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
Antwort Antwort
blackdrake

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

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
Antwort Antwort


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 21:16 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