Советы по Delphi

Запись потока в BLOB-поле


Вся хитрость заключается в использовании StrPcopy (помещения вашей строки в PChar) и записи буфера в поток. Вы не сможете передать это в PChar непосредственно, поскольку ему нужен буфер, поэтому для получения необходимого размера буфера используйте <BufferName>[0] и StrLen().

Вот пример использования TMemoryStream и записи его в Blob-поле:

    var
cString: String; oMemory: TMemoryStream; Buffer: PChar; begin



cString := 'Ну, допустим, хочу эту строку!';
{ СОздаем новый поток памяти } oMemory := TMemoryStream.Create;
{!! Копируем строку в PChar } StrPCopy( Buffer, cString );
{ Пишем =буфер= и его размер в поток } oMemory.Write( Buffer[0], StrLen( Buffer ) );
{Записываем это в поле} <Blob/Memo/GraphicFieldName>.LoadFromStream( oMemory );
{ Необходимо освободить ресурсы} oMemory.Free;
end;

[001388]



Содержание раздела