Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by BerndS,
13. Apr 2021
Bei einem Shortstring ist Index 0 das Längenbyte und danach kommen die Zeichen. Bei Strings und Ansistrings beginnt der Puffer ebenfalls bei 1.
Teste es mal im Debugger. Ich habe es natürlich zuvor getestet.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
Delphi
by BerndS,
13. Apr 2021
Beim Einlesen der Strings sollte nicht Result, sondern Result verwendet werden, da hier der Zeichenpuffer des Ansistrings beginnt.
function LoadStrFromStream(const st: TMemoryStream): AnsiString;
var l: LongInt;
begin
st.ReadBuffer(l, SizeOf(l)); // -> beim ersten Durchlauf knallt es hier dann
SetLength(Result, l);
if l>0 then st.ReadBuffer(Result ,l);
end;