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

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

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 11:40   #1
NitroSki
Давно не
Пользователь
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Сообщений: 58
По умолчанию OpenDialog

Добрый день - подскажите пожалуйста, что за проблему мы имеем

Есть код

Код:
var
  opDialog : TOpenDialog;
  DirName : String;   
  i : integer;
  ConF : TextFile;
begin
  
  opDialog := TOpenDialog.Create(self);
 
  opDialog.InitialDir := GetCurrentDir;
 
  opDialog.Options := [ofFileMustExist,ofAllowMultiSelect];
 
  opDialog.Filter := 'Только Access файлы:|*.mdb';
 DirName := '';



        AssignFile(conF, 'DataBase.cfg');
ReWrite(ConF);

if OpDialog.Execute then

    with OpDialog.Files do
      for i := 0 to Count - 1 do
      begin

        DirName := Strings[I]+ ';';
        WriteLn(ConF,DirName);

      end;
        CloseFile(conF);
       opDialog.Free;
Принцип работы программы - через опен диалог мы выбираем файлы, название которых записывается в файл конфигурации...

Проблема заключается в следующем: Когда мы открываем Опен диалог и выбираем файл - его название и путь записывается в файл конфигурации...... НО ВСТАЕТ ПРОБЛЕМА - когда после этого мы снова открываем Опен диалог и выбираем уже другие файлы из директории, они уже не записываются в файл конфигурации.....

Смотрим конфиг - в нем остается предыдущая запись......


ПОМОГИТЕ СОВЕТОМ ЧТО НЕ ТАК....Почему после повторного открытия диалога и выбора других файлов они не пишуться в файл конфигурации..........

Последний раз редактировалось NitroSki; 07.06.2011 в 11:54.
NitroSki вне форума Ответить с цитированием
Старый 07.06.2011, 13:58   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Они пишутся но в ДРУГИЕ конфиги.
Код:
AssignFile(conF, 'DataBase.cfg');
Без указания пути используется ТЕКУЩАЯ директория(папка).
При КАЖДОМ использовании OpenDialog текущая папка изменяется. (на вновь открытую).
Следовательно каждый раз мы пишем в новый конфиг расположенный в НОВОЙ ТЕКУЩЕЙ (та которая была последней открытой)папке. теперь во всех(почти) папках где мы выбирали есть по Database.cfg. Лечится заданием ПОЛНОГО пути для файла
Код:
AssignFile(conF, ExtractfilePath(application.Exename) + 'DataBase.cfg');
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 07.06.2011 в 14:01.
evg_m вне форума Ответить с цитированием
Старый 07.06.2011, 15:04   #3
NitroSki
Давно не
Пользователь
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Сообщений: 58
По умолчанию

Спасибо большое за подсказку.....Жаль только, что за 15 минут до Вашего поста(ответа) - мы все таки поняли в чем проблема - Вы правы Текущая директория меняется при выборе файла из любой другой директории

Поняли мы это пробившись головой об стену и танцуя с бубном вокруг компа пол дня

Кстати проблему решили немного по другому - не через AssignFile а через
Код:
SetCurrentDIr
А до этого как видно в коде у нас использовалась
Код:
GetCurrentDir
(Могли бы перевести английский язык и все было бы понятней гораздо быстрее)

Но в любом случае спасибо за Ваш ответ и за совет по использованию
Код:
AssignFile(conF, ExtractfilePath(application.Exename) + 'DataBase.cfg');

Последний раз редактировалось NitroSki; 08.06.2011 в 09:18.
NitroSki вне форума Ответить с цитированием
Старый 07.06.2011, 16:25   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Спасибо большое за подсказку.....
Не за что.

Цитата:
Кстати проблему решили немного по другому - не через Асиджн Файл а через СетКурентДиректори А до этого как видно в коде у нас использовалась ГетКурентДиректори (Могли бы перевести английский язык и все было бы понятней гораздо быстрее)
Текст был бы понятнее, если бы имена процедур остались оргинальными (без транслитерации).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 08.06.2011, 08:52   #5
NitroSki
Давно не
Пользователь
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Сообщений: 58
По умолчанию

Прошу прощения, я новичок на форуме, еще не вник в моветон

Исправлюсь
NitroSki вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД и OpenDialog alexeybest БД в Delphi 3 17.02.2010 09:34
OpenDialog Cabyrc БД в Delphi 4 05.04.2009 11:56
opendialog blackstersl Общие вопросы Delphi 4 18.09.2008 15:21
opendialog blackstersl Общие вопросы Delphi 1 11.09.2008 18:23
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; necky Компоненты Delphi 2 11.08.2007 12:53