Hallo Leute,
ich bin gerade dabei, einen Bug in Zeos zu beheben, aber ich komm nicht drauf.
Ich habe folgende Funktion:
Delphi-Quellcode:
function TZRowAccessor.GetPChar(ColumnIndex: Integer;
var IsNull: Boolean): PChar;
begin
{$IFNDEF DISABLE_CHECKING}
CheckColumnConvertion(ColumnIndex, stString);
{$ENDIF}
Result := nil;
if FBuffer.Columns[FColumnOffsets[ColumnIndex - 1]] = 0 then
begin
case FColumnTypes[ColumnIndex - 1] of
stString:
Result := @FBuffer.Columns[FColumnOffsets[ColumnIndex - 1] + 1];
else
Result := PChar(GetString(ColumnIndex, IsNull)); // <-- diese Zeile wird ausgeführt
end;
IsNull := False; // <-- Haltepunkt
end else
IsNull := True;
end;
Beim Haltepunkt steht das richtige Ergebnis in Result,
allerdings werden beim nächsten Befehl einige Zeichen abgeschnitten/verfälscht.
Im CPU-Fenster kann ich beobachten, dass der Aufruf der Methode LStrClr diese Veränderung hervorruft.
Das komische ist, dass dies unregelmäßig geschieht. Hat jemand eine Ahnung, woran das liegen könnte?
MfG
Stevie