delphifaq (original) (raw)

Хранение файлов в базе данных

Допустим, используется база MS Access. Создаем в табличке поле с типом "Объект OLE" (от версии может зависеть, у меня так называется), пусть у этого поля имя будет FILE_CONTENT.

Для доступа из кода оборачиваем это поле в TBlobField, выглядеть будет примерно так:

TBlobField(ADOQuery1.FieldByName(FILE_CONTENT)).LoadFromFile('D:\myfile.avi');

и

TBlobField(ADOQuery1.FieldByName(FILE_CONTENT)).SaveToFile('D:\myfile.avi');


Есть еще варианты с использованием параметров, но (имхо) выглядит некрасиво и (объективно) странным образом работает через раз без каких-либо сообщений об ошибке.

Сколько будет в штуках?

Danger

thyeadeschatarr

April 10th, 2009

function PrettyNumber(const n : integer; s1, s2, s3 : string): string; begin if (n mod 10 = 1) and (not (n mod 100 in [11..14])) then result := IntToStr(n) + ' ' + s1 else if (n mod 10 < 5) and (not (n mod 100 in [11..14])) then result := IntToStr(n) + ' ' + s2 else result := IntToStr(n) + ' ' + s3; end;

Функция возвращает строку с правильной формой единиц измерения, например PrettyNumber(x, 'день', 'дня', 'дней') при x = 24 вернет строку '24 дня', а при x = 14 - '14 дней'.

WinExec

werdender

January 19th, 2009

Описание функции: WinExec( LPCSTR lpCmdLine, UINT uCmdShow);

Где:
LPCSTR lpCmdLine — строка с именем программы или команда командной строки.
UINT uCmdShow — режим вывода на экран (SW_HIDE — скрыто, SW_SHOW — видимо).

В случае указания в качестве имени программы ее имени без пути (например WinExec('myprogram.exe', SW_SHOW);), сначала происходит ее поиск в каталоге с вызывающей программой, затем в системном каталоге windows, затем в каталоге windows.

Пример:
Для открытия ссылки http:// ya.ru в браузере по умолчанию пишем:

WinExec('rundll32 url.dll,FileProtocolHandler http://ya.ru', SW_SHOW);

* Используется библиотека url.dll
Эта библиотека есть практически везде, но если вдруг нужна, можно скачать (40 кб), если проблемы, попробуйте эту ссылку.