Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Запуск файлов хрянящихся в БД

Delphi , Базы данных , База данных

Запуск файлов хрянящихся в БД

Автор: Дмитрий
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Запуск файлов хрянящихся в БД

Данный код реализует чтение из Бд строки где спрятан путь к файлу,
далее для удачного запуска "курсор" переместим в папку, от куда надо
запустить разбиваем строку на файл(для запуска) и на директорию
(для перемещения "курсора").

Переброска "курсора" необходима для правильного запуска приложения.
Приложение может быть как под Windows, так и под Dos.

Зависимости: Windows, SysUtils
Автор:       Дмитрий, ahmaev@mail.ru, ICQ:100716670, Пенза
Copyright:   Дмитрий
Дата:        9 июля 2002 г.
***************************************************** }

procedure TForm1.dxfColorButton1Click(Sender: TObject);
var
  s, files1, files: string;
  dir, dir1: string;
  apchar: array[0..500] of char;
  i_s1: integer;
begin
  {Находим нужную строку в Бд}
  table1.locate('kod_s', treeview1.selected.parent.index + 1,
    [loCaseInsensitive]);
  table2.locate('game', treeview1.selected.Text, [loCaseInsensitive]);
  {Перепишем из БД строки содержащие ссылки в переменные}
  s := table2.fields[4].asstring;
  k_s := length(table2.fields[4].asstring) + 1;
  files := '';
  dir := '';
  repeat
    i_s := i_s + 1;
    k_s := k_s - 1;
    {Поставим семафор, чтоб разделить путь и имя файла}
    if s[k_s] = '\' then
      en := 1;
    if s[k_s] <> '\' then
      if en = 0 then
        files := files + s[k_s];
    if en = 1 then
      dir := dir + s[k_s];
  until i_s = length(table2.fields[4].asstring);
  {Переворачиваем считанное "путь до файла" и "имя файла"}
  for i_s1 := length(files) downto 1 do
    files1 := files1 + files[i_s1];
  for i_s1 := length(dir) downto 1 do
    dir1 := dir1 + dir[i_s1];
  {Переводим курсор в папку откуда должна запустится программа}
  chdir(dir1);
  strpcopy(apchar, files1);
  {Запускаем программу}
  shellexecute(handle, 'open', apchar, 0, 0, SW_maximize);
end;

Here's the translation of the content into Russian:

Код на Delphi, который запускает файлы, хранящиеся в базе данных. Код ищет конкретную строку в базе данных, извлекает путь к файлу и имя из нее, а затем использует функцию ChDir для изменения текущего каталога на тот, где находится файл. Наконец, код использует функцию ShellExecute для запуска файла.

Некоторые наблюдения и предложения:

  1. Код довольно старый (2002 год) и может не быть совместимым с современными версиями Delphi.
  2. Использование table1.locate и table2.locate указывает, что база данных является более старой версией встроенной базы данных Delphi,such as Paradox или dBase.
  3. Код использует много ручной манипуляции строк для извлечения пути к файлу и имени из записи базы данных. Это может быть ошибочно и трудно поддерживать. Лучше использовать более надежный метод, such as using a regular expression or a dedicated text processing library.
  4. Код предполагает, что путь к файлу находится в том же каталоге, что и приложение. Если файл находится в другом месте, функция ChDir не будет работать правильно.
  5. Код использует Shellexecute для запуска файла, который является старой API-функцией и больше не рекомендуется для новых приложений. Лучше использовать более современный метод, such as using the TProcess component or the RunCommand function.

Альтернативное решение:

  1. Вместо ручной манипуляции строк используйте регулярное выражение для извлечения пути к файлу и имени из записи базы данных.
  2. Используйте функцию ExtractFilePath для извлечения каталога из пути к файлу, а затем функцию ChangeDirectory для изменения текущего каталога на тот, где находится файл.
  3. Используйте компонент TProcess или функцию RunCommand для запуска файла вместо Shellexecute.

Пример модифицированного кода:

procedure TForm1.dxfColorButton1Click(Sender: TObject);
var
  s, files, dir: string;
  i_s1: integer;
begin
  table1.locate('kod_s', treeview1.selected.Parent.Index + 1, [loCaseInsensitive]);
  table2.locate('game', treeview1.Selected.Text, [loCaseInsensitive]);

  s := table2.Fields[4].AsString;
  files := '';
  dir := '';

  for i_s1 := 1 to Length(s) do
    if s[i_s1] = '\' then
      dir := dir + s[i_s1]
    else
      files := files + s[i_s1];

  ChangeDirectory(ExtractFilePath(dir));
  RunCommand(0, 'open', files, 0, 0);
end;

Обратите внимание, что это только пример и может потребоваться модификация для соответствия вашим конкретным требованиям.

В статье описан код на Delphi, который позволяет запускать файлы, хранящиеся в базе данных (БД), перемещая курсор в папку, откуда необходимо запустить программу.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: База данных ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-06-02 10:20:12
2024-07-27 08:21:51/0.0037379264831543/0