Форум: "Базы";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизКак считать содержимое файла чтобы загнать его в blob базы Найти похожие ветки
← →
ilias1979 (2005-02-23 13:57) [0]Здравствуйте, мне необходимо полностью считать содержимое любого произвольного файла будь то doc, xls, rtf, bmp, jpg в переменную, чтобы потом загнать ее в blob поле FireBird. Хотелось бы чтобы эта переменная в результате имела тип string. Так как, как я понимаю именно этому типу delphi соответствуют blob поля FireBird. Как правильнее такое реализовать и что неправильно в моем коде который выдает access violation. (сдается мне что я сильно туплю и решение гораздо проще)
Функция извлечения из файла инфы
FileReadIL(fileName:string):string;
var
f:HFILE;
FileSize,i:integer;
buffer:array of char;
stroka:string;
begin
f:=_lopen(PChar(fileName), OF_READ);
FileSize:=_llseek(f,0, FILE_END);
SetLength(buffer,FileSize);
_llseek(f, 0, FILE_BEGIN);
_lread(f,@buffer,FileSize);
_lClose(f);
stroka:="";
for i:=0 to (fileSize-1) do
stroka:=stroka+buffer[i];
result:=stroka;
end;
собственно вызов функции и загон инфы в базу
if opendialog1.Execute then
begin
content:=FileReadIL(opendialog1.FileName);
memo1.text:=content;
ibquery1.Params[0].AsBlob:=content;
ibdatabase1.Connected:=true;
ibtransaction1.StartTransaction;
ibquery1.ExecSQL;
ibtransaction1.Commit;
end;
← →
Плохиш © (2005-02-23 14:16) [1]Ключевое слово для справки TBlobField, там даже примеры есть.
← →
Eraser © (2005-02-23 14:38) [2]ilias1979
И TBlobStream...
← →
ilias1979 (2005-02-24 14:41) [3]Спасибо, все как Вы и говорили оказалось проще
На самом деле я сильно тупил
Вместо моей длинной API функции достаточно написать одну строку и все на удивление работает
IBQuery1.Params[0].LoadFromFile(OpenDialog1.FileName, ftBlob);
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.036 c