Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

почему Opendialog "тормозит" программу [D7, XP]


dasha ©   (2007-01-28 16:29:00) 

программа отказывается открывать файлы через shellexecute после того как   выбирается файл через opendialog
if Opendialog1.Execute and FileExists(OpenDialog1.FileName)then edit1.Text:=OpenDialog1.FileName;
причем не открываются обсолютно независимые от этой строчки файлы, а ошибки никакой не выдает
если опустить  FileExists(OpenDialog1.FileName) то ничего не изменится


Virgo_Style   (2007-01-28 19:24:00) [1]

GetCurrentDir до того, SetCurrentDir после того, но ненадежно все это, если программу ярлыком запускать, то уже неизвестно, какой каталог будет текущим, лучше б все же [11] / [8]a


Anatoly Podgoretsky   (2007-01-28 19:03:00) [2]

> dasha  (28.01.2007 18:38:10)  [10]

Восстановить не возможно, поскольку подобная информация отсутствует, но можно расширить имя файла - ExpandFileName, после ExtractFilePath и результат в переменную root
Затем используешь root + file
Делать это можно только при условии, что относительный и текущий пути совпадают.
У тебя в текущий момент совпадают.


Anatoly Podgoretsky   (2007-01-28 18:39:00) [3]

> dasha  (28.01.2007 18:25:06)  [6]

Не используй относительные пути, а то что работало до вызова диалога, так это ты в рубашке родилась, так звезды сложились, что текущий путь равен относительному.
Если ты уверена, то expandFileName при старте приложения, извлечь отсюда путь и потом прибавлять его перед вызовом. Но это до поры до времени, все равно рано или поздно будет проблема. Только абсолютные пути - путь к успеху.


dasha   (2007-01-28 18:38:00) [4]

а как восстановить текущий каталог?????


Virgo_Style   (2007-01-28 18:33:00) [5]

dasha   (28.01.07 18:25) [6]
ну вообщем связи со строкой
if Opendialog1.Execute and FileExists(OpenDialog1.FileName)then edit1.Text:=OpenDialog1.FileName;
я не вижу...


см. [3]


Virgo_Style   (2007-01-28 18:31:00) [6]

a. Не используй относительные пути,
или
b. Восстанавливай текущий каталог после выбора файла,
или
c. А нет ли у OpenDialog в настройках "не изменять текущий каталог"?


dasha   (2007-01-28 18:26:00) [7]

да запускаемый файл это совсем не выбираемый через диалог


dasha   (2007-01-28 18:25:00) [8]

В программе есть много вызовов функции shellExecute, например на щелчок мыши по ячейке таблицы  должен открываться файл, относительный адрес которого записан в   ячейке 'Adress_R' (просто строкой ..допустим Materiali\CO\PS\3_kurs\grafik_sso.doc):
  s:=ADOQuery1.FieldValues['Adress_R'];
  ShellExecute(Handle,nil,pchar(s),'','',SW_MAXIMIZE );  

или при нажатии на кнопку "Открыть"
s:=ADOQuery3.FieldValues['Adress_R'];
ShellExecute(Handle,nil,pchar(s),nil,nil,SW_MAXIMIZE)ж

ну вообщем связи со строкой
if Opendialog1.Execute and FileExists(OpenDialog1.FileName)then edit1.Text:=OpenDialog1.FileName;
я не вижу...после того как через opendialog выбран файл перестают открываться файлы даже из других модулей программы, на других формах....т.е. при нажатии на кнопки или щелчке по таблице просто ничего не происходит

а до выбора через диалог все прекрасно работает


Virgo_Style   (2007-01-28 17:04:00) [9]

Anatoly Podgoretsky ©   (28.01.07 16:41) [4]
OpenDialog.filename возвращает полный путь.



> причем не открываются обсолютно независимые от этой
> строчки файлы


Я понимаю эту фразу именно таким образом: запускаемые файлы - это НЕ выбираемый файл. Быть может, я ошибаюсь, поживем - увидим.


Anatoly Podgoretsky   (2007-01-28 16:41:00) [10]

> Virgo_Style  (28.01.2007 16:40:03)  [3]

OpenDialog.filename возвращает полный путь.


Virgo_Style   (2007-01-28 16:40:00) [11]

Телепатор говорит, что у тебя текущий каталог меняется при выборе файла, а пути забиты относительные


Anatoly Podgoretsky   (2007-01-28 16:36:00) [12]

> dasha  (28.01.2007 16:29:00)  [0]

shellexecute не наблюдается


Джо   (2007-01-28 16:35:00) [13]

Вероятно, следует показать код, использующий ShellExecute и объяснить, что значит «отказывается открывать».


Наверх

Титульная страница Поиск, карта сайта Написать письмо