Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как заменить абсолютный путь относительным Delphi

340
26 марта 2012 года
Fellinggood
170 / / 27.04.2009
Здравствуйте! Не поможете в решении одной задачи: У меня программа на Delphi - загружает тесты по физике в
виде картинок в базу данных. Но при этом указывается полный путь d:/my/task. Если открывать открывать эту
программу на другом компе, то папка my может быть перемещена на диск e. И при попытке достать картинку
по старым путям в базе данных уже не получится. Открывается картинка с помощью элемента OpenPictureDialog1.
Не подскажете как решить эту проблему.
Спасибо заранее.


Код:
procedure TFormMain.BitBtn7Click(Sender: TObject);
var Fname:string;
begin
   if OpenPictureDialog1.Execute then
      begin
         fname:=openpicturedialog1.filename;
         with dm.q do // Запрос из базы данных
            begin
               Active := false;       // неактивен
               SQL.Clear; // очистить запрос
               SQL.Add('INSERT INTO IM_TABLE(IMG) VALUES(');
               SQL.Add(QuotedStr(Fname) + ')');
               ExecSQL;
            end;
            with dm.SimpleDataSet2 do  
            begin
               Active:=false;
               DataSet.Active := false;
               DataSet.Active := true;
               Active := true;
               Locate('IMG', Fname, [loCaseInsensitive]);
            end;
      end;
end;
72K
26 марта 2012 года
CorsaiR
59 / / 07.03.2012
Application.Exename даст тебе путь к твоему екзешнику. От него и плясать
340
27 марта 2012 года
Fellinggood
170 / / 27.04.2009
Цитата: CorsaiR
Application.Exename даст тебе путь к твоему екзешнику. От него и плясать


К какому exeшнику?

72K
27 марта 2012 года
CorsaiR
59 / / 07.03.2012
http://docwiki.embarcadero.com/Libraries/en/Vcl.Forms.TApplication.ExeName
Цитата:
Contains the file name of the application's executable file including path information.

Use ExeName to obtain the name of the executable file for the application. ExeName is the fully-qualified name, including the path to the application's executable.



Твоего екзешника, с полным путем, откуда его запустили.

340
28 марта 2012 года
Fellinggood
170 / / 27.04.2009
Вопрос немного изменился: как при добавлении в базу добавлялся путь только начиная с подпапки картинок где лежит прога, т.е. чтобы в базу заносилась информация не d:\my\pic\pic1\1.jpg, a только pic\pic1\1.jpg?
Нужна функция которая разбивала бы путь на подпути, может есть такая?
72K
28 марта 2012 года
CorsaiR
59 / / 07.03.2012
В этом случае руками придется. Папку с картинками лучше обозвать так, чтобы pos' ом в строке легче найти было,и все, что перед отбрасывать.
340
28 марта 2012 года
Fellinggood
170 / / 27.04.2009
Всем спасибо - сделал так:


Код:
if OpenPictureDialog1.Execute then
begin

         fname:=openpicturedialog1.filename;
         // Находим номер символа начала подстроки my
         my := '\ny\';
         P := Pos(my, fname);
         P := P + 4;
         col := length(fname) - P + 1;
         // Вставляем новую строку в путь для базы данных
         pyt_no_pr := Copy(fname, P, col);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог