Zitat von
himitsu:
if (MStream.Position and $2000) = 0 then
das ist für mich nicht überraschend ... immerhin ist das fast so schlimm wie
if (MStream.Position and $1) = 0 then
nur daß bei Letzterem jeden 2. Durchlauf etwas gemacht wird und bei Ersterem 8192 Mal hintereinander und dann 8192 Mal garnicht und so weiter ... also im Durchschnitt bei jedem 2. Durchlauf.
versuch es mal so
if (MStream.Position and $1fff) = 0 then
Und hier war der Denkfehler
Na klar kann $2000 nicht funktionieren. Es war aber auch schon spät, als ich das probiert habe.
$2000 = Bin 0010 0000 0000 0000 = 8192
$1FFF = Bin 0001 1111 1111 1111 = 8191
i AND $1FFF ist erst im 8192'sten Durchlauf gleich Null -> wie gewünscht.
$1FFF oder auch $FFFF funktionieren perfekt.
Das mit dem Aktualisieren werde ich mir anschauen, Matze.
Danke für eure Hilfe.
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten
API wie ein Stolperstein wirken.