Delphi XE2 - обработка полей BLOB-объектов - PullRequest
2 голосов
/ 09 января 2012

Мы пытаемся сделать наше приложение совместимым с юникодом, и мы переходим с delphi 2007 на delphi xe2, мы столкнулись с несколькими проблемами и нуждаемся в их предложениях

1) одно изменение - хранить в базе данных блоб-данные, содержащие строки юникода

Мы храним огромные XML-данные в виде больших двоичных объектов в базе данных, но в последней версии Delphi (xe2) большие двоичные объекты обрабатываются как массив байтов. Итак, что нужно сделать, чтобы хранить данные BLOB-объектов в базе данных, пытались преобразовать Param.AsBlob: = WideBytesOf (xml), но это, похоже, не работает.

2) Также мы используем HyperString из систем EFD для более быстрых манипуляций со строками, но теперь версия этой библиотеки в юникоде недоступна, скомпилировал код, изменив значение ansistring на string, и попытался изменить несколько инструкций на языке ассемблера, но это было успешно до сих пор их было немного, поэтому любой может предложить любую альтернативу для более быстрых манипуляций со струнами

1 Ответ

0 голосов
/ 04 августа 2013

Я около полугода искал в Интернете, как правильно поместить BLOB-объект в базу данных, и нашел одно решение, которое отлично сработало для меня, может быть, оно вам тоже поможет:

Изображение - компонент TcxImage MainQuery -Компонент TQuery MainQueryPicture - это поле Blob из базы данных, хранящейся в компоненте Query, с помощью редактора полей ImagePath - строковая переменная, содержащая путь к файлу изображения

    MainQuery.Edit;
    if Image.Picture.Graphic <> nil then //if there is an image loaded to the component
    begin
      MainQueryPicture.LoadFromFile(ImagePath); //load the image to a blob field
    end;
    MainQuery.Post; //post any changes to the table 

Надеюсь, это поможет.

...