Hallo himitsu,
danke erstmal.
Bin jetzt einen Schritt weiter. Noch tiefer unten im Sumpf der
COM-Objekte gibt es Anweisungen der Form:
Delphi-Quellcode:
procedure myKHKbinRead (ObjFileIO : _CFileIO;
ichannel,
ikeyOffset : SmallInt;
sKey :WideString;
sbuffer :Pchar;
var irecNb: LongInt);
var
StrBuffer : AnsiString;
begin
ObjFileIO.objFile(iChannel).binRead (ikeyOffset ,sKey, irecNb);
strBuffer := ObjFileIO.objFile(iChannel).strGetFieldBuffer
(1,ObjFileIO.objFile(iChannel).lngRecordLen);
if irecNb > 0 then
Move(StrBuffer[1],sBuffer^,ObjFileIO.objFile(iChannel).lngRecordLen);
end;
Der StrBuffer war bisher als String definiert. Die Funktion ObjFileIO.objFile(iChannel).strGetFieldBuffer gibt aber einen WideString zurück (wie bei
COM Objekten üblich). Hier wurde also früher die Konvertiereung zurück in "Small" Strings durchgeführt. Jetzt habe ich dort String durch AnsiString ersetzt (und in allen anderen Lesefunktionen auch) und jetzt sieht es gleich wieder besser aus, wenn ich auch in TCl4_a10110 alle Strings durch AnsiStrings ersetze.