Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2013, 06:26   #1
Neksion
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 29
По умолчанию Динамические пути

Доброго времени суток!
При создании программы для работы с таблицами возникла проблема её переноса на другие компьютеры: т.е если на первом ПК БД хранится по пути С:\...\BS.db, то на втором ПК D:\...\BS.db - в таком случае программа работать не будет, т.к в компоненте Table прописан неверный путь.
Вопрос: можно ли в программке сделать так, чтобы программа могла считывать БД, находящие в одной папке с самой программой и как это сделать(лучше ссылку на литературу и как это правильно называется=))?
Заранее всем спасибо!
Neksion вне форума Ответить с цитированием
Старый 21.05.2013, 07:45   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ExtractFilePath(ParamStr(0)) даст тебе путь к каталогу запущенной программы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.05.2013, 18:49   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Кроме того, если указать имя файла без пути, файл будет взят из рабочей папки программы.
Указать нужную рабочую папку можно в ярлыке.
s-andriano вне форума Ответить с цитированием
Старый 04.06.2013, 12:23   #4
Neksion
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 29
По умолчанию

Спасибо, получилось.
Возник другой вопрос: если для рабочих файлов достаточно сделать это -
Цитата:
указать имя файла без пути, файл будет взят из рабочей папки программы.
То как указать путь в место, куда будет копироваться файл(файл будет копироваться в папку(P), находящейся в директории с рабочей программой), при помощи этой функции?
Код:
CopyFile(OpenDialog9.FileName,'/папка P/',true);
Neksion вне форума Ответить с цитированием
Старый 04.06.2013, 12:26   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
CopyFile(OpenDialog9.FileName,'..\P\',true);
Если не ошибаюсь...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2013, 13:41   #6
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Если не ошибаюсь...
Одна точка, наверное.

И стоит помнить, что для такого фокуса у программы должны быть права на запись в эту директорию.
Abstraction вне форума Ответить с цитированием
Старый 05.06.2013, 00:03   #7
Neksion
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 29
По умолчанию

Спасибо за ответы!
Вот что получилось:
Код:
CopyFile(PChar(OpenDialog10.FileName),(PChar('.\Library\'+ExtractFilename(opendialog10.FileName))),false);
Код ошибку не выдает, но свою задачу не выполняет(запускай программуу с правами администратора или нет).
P/s вариант с одной-двумя точками исключается - результат тот же.
В чем может быть проблема?
Neksion вне форума Ответить с цитированием
Старый 05.06.2013, 00:24   #8
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Код ошибку не выдает, но свою задачу не выполняет(запускай программуу с правами администратора или нет).
Могу ошибаться, но эта процедура не вернет ошибку. Разве что попробуйте через
Код:
GetLastError
Delphi_ProGer вне форума Ответить с цитированием
Старый 05.06.2013, 00:27   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

есть такое понятие как "текущий каталог". Current directory
потом есть еще "стандарные каталоги"
Все неполные пути разрешаются
1. относительно текущего каталога
2. среди стандартных. (при поисках файла)

Цитата:
В чем может быть проблема?
OpenDialog меняет текущий каталог на тот в который он смотрит.
посему копирование идет по тому же пути (в туже папку) откуда и читаем, а вовсе не в папку с программой.
поможет
1. полный путь
Код:
ExtractFilePath(...) + ...
2.
Код:
mydir:=GetCurrentdir; // запомнить до вызова
    OpenDialog1.Execute 
   SetCurrentdir(mydir); //  восстановить после вызова
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 05.06.2013, 00:40   #10
Neksion
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 29
По умолчанию

GetlastError показал, что код ошибки - 3
Neksion вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Волновой алгоритм поиска пути в лабиринте. Построение пути Wanz Помощь студентам 1 17.03.2013 14:04
Железнодорожные пути jobmob Паскаль, Turbo Pascal, PascalABC.NET 3 27.05.2012 17:48
Пути к папкам Максим139 Помощь студентам 5 11.04.2011 07:46
Пути к данным Лубышев Общие вопросы Delphi 3 21.01.2008 18:56
Системные пути Lonix Общие вопросы Delphi 8 14.09.2007 17:10