delphifaq


Программирование на delphi


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

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

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

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

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


Сколько будет в штуках?
Raaskenag guard
thyeadeschatarr
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
Описание функции:
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 кб), если проблемы, попробуйте эту ссылку.


?

Log in