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