Главная страница
    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.47 MB
Время: 0.062 c
15-1169710131
pasha_golub
2007-01-25 10:28
2007.02.18
Section 508 для программ


2-1170394666
Chelovek
2007-02-02 08:37
2007.02.18
Предустановка свойств нового компанента......


15-1170099470
hmmm
2007-01-29 22:37
2007.02.18
помогите перевести фразу с eng.


2-1170228447
NLex
2007-01-31 10:27
2007.02.18
GUID


3-1163139508
WhiteBarin
2006-11-10 09:18
2007.02.18
Текущая дата в FireBird?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский