Форум: "Начинающим";
Текущий архив: 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.054 c