Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

почему 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.057 c
2-1170328443
Extar
2007-02-01 14:14
2007.02.18
Диалог выбора каталога человеческий как организовать?


2-1169972656
koha
2007-01-28 11:24
2007.02.18
indy - пример из книги Подгородетского


2-1170320253
Neket
2007-02-01 11:57
2007.02.18
Query


2-1170280250
bagos
2007-02-01 00:50
2007.02.18
alt+f4


15-1169629958
umbra
2007-01-24 12:12
2007.02.18
как в ХР менять раскладки клавиатуры для досовской программы?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский