Модератор: Модераторы
procedure TMyDBCustomDataSet.FreeRecordBuffer(var Buffer: PChar);
...
if RecordIsDinamic then begin
{release dinamics fields}
AnsiIdx := 0;
if RecordDinamics[dfsAnsi] > 0 then begin // <-- вот здесь, ошибка, нужно проверять на ">="
for AnsiIdx := 0 to RecordDinamics[dfsAnsi] do begin
PAnsiStrings(@(RecBuf^.Data))[AnsiIdx] := '';
end;
AnsiIdx := RecordDinamics[dfsAnsi]; // <-- AnsiIdx нужно ещё увеличить на 1
end;
if RecordDinamics[dfsWide] > 0 then begin // <-- и вот здесь ошибка
for WideIdx := AnsiIdx to AnsiIdx + RecordDinamics[dfsWide] do begin
PWideStrings(@(RecBuf^.Data))[AnsiIdx] := '';
end;
end;
end;
...
procedure TMyDBCustomDataSet.FreeRecordBuffer(var Buffer: PChar);
...
if RecordIsDinamic then begin
{release dinamics fields}
AnsiIdx := 0;
if RecordDinamics[dfsAnsi] > 0 then begin // <-- вот здесь, ошибка, нужно проверять на ">="
for AnsiIdx := 0 to RecordDinamics[dfsAnsi] do begin
PAnsiStrings(@(RecBuf^.Data))[AnsiIdx] := '';
end;
AnsiIdx := RecordDinamics[dfsAnsi]; // <-- AnsiIdx нужно ещё увеличить на 1
end;
if RecordDinamics[dfsWide] > 0 then begin // <-- и вот здесь ошибка
for WideIdx := AnsiIdx to AnsiIdx + RecordDinamics[dfsWide] do begin
PWideStrings(@(RecBuf^.Data))[AnsiIdx] := '';
end;
end;
end;
...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4