Assasin писал(а):
Век живи - век учись, не знал такогоА ты что, в моих компонентах такого не встречал, значит, плохо изучал код компонентов
------------ Дoбавленo в 19.30:
Вот, к примеру, кусок из таблицы
TRY
case dc.Data_type of
data_null: exit;
end;
if Assigned(PData(Control.LVItemData[Row])) then
begin
fd := PData(Control.LVItemData[Row]);
FreeData(fd);
end
else
begin
new(fd);
FillChar(fd^, sizeof(TData), 0);
end;
CopyData(fd, @dc);
Control.LVItemData[Row] := cardinal(fd);
FINALLY
FreeData(s);
END;
или из DS_ODBC
Buffer := AllocMem( FD.ColumnSize + 4 );
TRY
R := SQLGetData( fSession, i + 1, SQL_C_DEFAULT, Buffer, FD.ColumnSize, @FD.ColumnSize );
if ((R = SQL_SUCCESS) or (R = SQL_SUCCESS_WITH_INFO)) and (FD.ColumnSize <> SQL_NULL_DATA) then
begin
St := NewMemoryStream;
St.Write( Buffer^, FD.ColumnSize );
St.Position := 0;
if scalar then
dtStream(ndt, St)
else
dtString(ndt, 'Binary');
free_and_nil(St);
end; { If }
FINALLY
FreeMem(Buffer);
END;