скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Запись потока в 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;






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook