Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

почему Opendialog "тормозит" программу   Найти похожие ветки 

 
dasha   (2007-01-28 16:29) [0]

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


 
Джо ©   (2007-01-28 16:35) [1]

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


 
Anatoly Podgoretsky ©   (2007-01-28 16:36) [2]

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

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


 
Virgo_Style ©   (2007-01-28 16:40) [3]

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


 
Anatoly Podgoretsky ©   (2007-01-28 16:41) [4]

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

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


 
Virgo_Style ©   (2007-01-28 17:04) [5]

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



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


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


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

В программе есть много вызовов функции 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 выбран файл перестают открываться файлы даже из других модулей программы, на других формах....т.е. при нажатии на кнопки или щелчке по таблице просто ничего не происходит

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


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

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


 
Virgo_Style ©   (2007-01-28 18:31) [8]

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


 
Virgo_Style ©   (2007-01-28 18:33) [9]

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


см. [3]


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

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


 
Anatoly Podgoretsky ©   (2007-01-28 18:39) [11]

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

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


 
Anatoly Podgoretsky ©   (2007-01-28 19:03) [12]

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

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


 
Virgo_Style ©   (2007-01-28 19:24) [13]

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



Страницы: 1 вся ветка

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
2-1170070648
rosl
2007-01-29 14:37
2007.02.18
следующий номер автоинкриментного поля


2-1170100189
Romeo12
2007-01-29 22:49
2007.02.18
помогите пожалуйста


1-1166132647
el_n
2006-12-15 00:44
2007.02.18
бинарные деревья


2-1170039213
givs
2007-01-29 05:53
2007.02.18
Пытаешься поместить его на форму выдает ошибку,


15-1170063252
sniknik
2007-01-29 12:34
2007.02.18
Подработка.