Модератор: Модераторы

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;
...  



 ошибок не возникало и файл fbdatasetoptions.ini создался без проблем
  ошибок не возникало и файл fbdatasetoptions.ini создался без проблем 
 
    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;
    ... 


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1