Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Registry ReadBinaryData Problem (https://www.delphipraxis.net/118527-registry-readbinarydata-problem.html)

himitsu 1. Nov 2011 09:27

AW: Registry ReadBinaryData Problem
 
Du kannst auch einen String/UnicodeString/WideString verwenden, aber bedenke, daß dieser 2 Byte pro Char besitzt.

PS: Statt des AnsiStrings, verwendet man für sowas den RawByteString ... das ist zwar auch ein AnsiString, aber ohne Behandlung der CodePage.
Genauso, wie es den Utf8String gibt, welches einen "AnsiString" mit voreingestellter UTF-8-CodePage (CP_UTF8) darstellt.

Wobei man eben auch TBytes (ein Array of Byte) verwenden könnte, oder halt doch PByte und Co.


Bei RawByteString und TBytes hat man den Vorteil, daß sich Delphi um die Speicherverwaltung (vorallem die Freigabe) kümmert
und das sogar threadsave, über mehrere Referenzen hinweg.
(ja, man mag es kaum glauben, aber auch die RTL kann teilweise threadsave sein)



Und ja, auch in einem Unicode-Programm ist es manchmal ratsam/sinnvoll, wenn man AnsiStrings verwendet ... eben genau dann, wenn man wirklich ANSI benötigt (genau so wie man damals auch in einem ANSI-Programm den WideString nutzen konnte) oder eben wenn man einen "String" als Byte-Puffer nutzen will, denn SizeOf(AnsiChar) = SizeOf(Byte).

So war es damals eigentlich schon fahrlässig, wenn man für solche Datenpuffer den "String" verwendete, obwohl man eigentlich den AnsiString hätte nutzen müssen, weil sich der String ja ändern konnte/tat.

shadowman 1. Nov 2011 10:28

AW: Registry ReadBinaryData Problem
 
Ok, verstehe.

Vielen Dank Detlef und himitsu!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.
Seite 3 von 3     123   

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