Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
14. Mär 2021
Binärdaten in Strings waren noch nie eine super Idee.
Alternativen gibt es zu Genüge und wurden Einige genannt.
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
14. Mär 2021
Es gibt verschiedene Einstellungen für TEncoding bzw. WideCharToMultiByte und standardmäßig gibt es keine Fehlermeldung, wenn es nicht passt.
https://www.delphipraxis.net/207225-eencodingerror-mit-devexpress.html
Und die Bereichsprüfung kann hier nicht greifen, dass die Chars nicht einzeln im Delphi-Code von WideChar ins AnsiChar zugewiesen werden.
Bestes Beispiel: UTF8Decode und seine...
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
12. Mär 2021
ä ö ü ß
oder z.B. bei den Franzosen und Dergleichen auch é ê ë ì í î ï ñ ò ó ô õ ö ... , was nicht alles in die 255 rein passt.
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
11. Mär 2021
Inzwischen gibt es ja nun die Inline-Variablen.
var F := TMyForm.Create(nil);
try
finally
F.Free;
end;
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
10. Mär 2021
Also hast du keinen AnsiString (CP_ACP) sondern einen RawByteString, oder besser noch ein TBytes.
Und vorallem mit Letzterem bereitet das TFile.WriteAllBytes keine Probleme.
Forum: Win32/Win64 API (native code)
Delphi
by himitsu,
9. Mär 2021
Da Byte und AnsiChar gleich groß sind, kann man statt der Schleife und jedem Char einzeln auch einmal Move oder SetString verwenden.
Statt den direkten Casts (siehe Rolf Frei) kann man auch TEncoding verwenden. (die Casts sind hier aber einfacher)
Und wenn du schon TFile.WriteAllBytes verwendest ... dir ist aufgefallen, dass es da auch Methoden für Text/String gibt?
Und TStringStream...