Marco,
could you please check the following fixes:
ds := Size * 2 + 2; was ds := Size * 2;
function TOracleDataset.GetRecBufSize: Integer;
var i: Integer;
ds: Integer;
FI: TOracleFieldInfo;
begin
Result := 0;
FRecordSize := 0;
for i := 0 to FieldCount - 1 do with Fields do
begin
FI := FieldInfoList.ForField(Fields);
if FieldNo >= 0 then
begin
FI.FieldOffset := FRecordSize;
ds := FI.RealDataSize;
end else
begin
ds := DataSize;
if DataType = ftWideString then ds := Size * 2 + 2;
end;
Inc(Result, ds + 1);
if FieldKind in [fkData, fkInternalCalc] then Inc(FRecordSize, ds + 1);
end;
Inc(Result, RecInfoSize);
end;
Next:
Result := AField.Size * 2 + 2 was Result = AField.Size
function TOracleDataSet.RealFieldDataSize(AField: TField): Integer;
var FI: TOracleFieldInfo;
begin
FI := FieldInfoList.ForField(AField);
if FI nil then
Result := FI.RealDataSize
else
if AField.DataType = ftWideString then
Result := AField.Size * 2 + 2
else
Result := AField.DataSize;
end;
Next:
function TOracleFieldInfo.RealDataSize: Integer;
begin
if Field.IsBLOB then
Result := 0
else begin
Result := Field.DataSize;
if Field.DataType = ftWideString then
begin
//if IsUTF16 then
Result := Field.Size * 2 + 2
//else
// Result := Field.Size + 1;
end;
end;
end;
regards
Nils
could you please check the following fixes:
ds := Size * 2 + 2; was ds := Size * 2;
function TOracleDataset.GetRecBufSize: Integer;
var i: Integer;
ds: Integer;
FI: TOracleFieldInfo;
begin
Result := 0;
FRecordSize := 0;
for i := 0 to FieldCount - 1 do with Fields do
begin
FI := FieldInfoList.ForField(Fields);
if FieldNo >= 0 then
begin
FI.FieldOffset := FRecordSize;
ds := FI.RealDataSize;
end else
begin
ds := DataSize;
if DataType = ftWideString then ds := Size * 2 + 2;
end;
Inc(Result, ds + 1);
if FieldKind in [fkData, fkInternalCalc] then Inc(FRecordSize, ds + 1);
end;
Inc(Result, RecInfoSize);
end;
Next:
Result := AField.Size * 2 + 2 was Result = AField.Size
function TOracleDataSet.RealFieldDataSize(AField: TField): Integer;
var FI: TOracleFieldInfo;
begin
FI := FieldInfoList.ForField(AField);
if FI nil then
Result := FI.RealDataSize
else
if AField.DataType = ftWideString then
Result := AField.Size * 2 + 2
else
Result := AField.DataSize;
end;
Next:
function TOracleFieldInfo.RealDataSize: Integer;
begin
if Field.IsBLOB then
Result := 0
else begin
Result := Field.DataSize;
if Field.DataType = ftWideString then
begin
//if IsUTF16 then
Result := Field.Size * 2 + 2
//else
// Result := Field.Size + 1;
end;
end;
end;
regards
Nils