Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2016, 22:33   #1
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию OpenDialog виснет на некоторых компьютерах

Поставил сегодня программу своему клиенту на 5 компьютеров. На 3-х из пяти при вызове OpenDialog программа намертво виснет. В чем может быть причина? Кто сталкивался?
Dux вне форума Ответить с цитированием
Старый 28.03.2016, 23:03   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
В чем может быть причина?
Дай угадаю - 100% ошибка в программе
Цитата:
Кто сталкивался?
С какими только не сталкивался, может и такая была, все лечились отладкой и поиском ошибок в коде
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.03.2016, 23:15   #3
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Вот спасибо! Помог!
Dux вне форума Ответить с цитированием
Старый 28.03.2016, 23:24   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А какую помощь ждал? Ищи ошибку в коде. Она скорее всего наведенная, связанная с разрушением данных в памяти. Например, где-то в массив за пределы записал, испортив чего-то и только в момент обращения к диалогу рушится приложение.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.03.2016, 23:37   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Dux, вот это http://www.programmersforum.ru/showthread.php?t=289553 не оно?

А вообще, да, странно, Вы что, реально ожидали, что тут телепаты на расстоянии определят, чем отличаются те компьютеры, где программа работает, от тех, где не работает?
И угадают, в каком месте и как Вы вызываете OpenDialog?
Причин может быть огромное множество, начиная от ошибок в коде, различием в начальной папке запуска программы и заканчивая настпройками безопасности и блокировкой антивирусами.

Только анализ, пошаговая отладка, выдача логов и т.п. (и ещё везение) могут Вам помочь.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.03.2016, 15:21   #6
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Эту темку смотрел, помогла но не до конца.
Dux вне форума Ответить с цитированием
Старый 29.03.2016, 15:47   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Dux Посмотреть сообщение
Эту темку смотрел, помогла но не до конца.
Заинтриговали!

Что значит - "помогла, но не до конца"?!
Программа перестала виснуть, но диалог открытия файлов не появляется?
или ошибка какая-то стала выдаваться?
или на некоторых компьютерах стало работать, но на некоторых по прежнему не работает?!

вот уж бы я никогда не подумал, что простейший обвес над стандартной WinAPIшной функцией может не работать!
Небось, мелкософтовцы что-то во внутренностях винды поменяли!

А есть корреляция - на каких версиях Windows ваша программа работает, а на каких - нет?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.03.2016, 15:56   #8
Dux
Delphi Master
Форумчанин Подтвердите свой е-майл
 
Аватар для Dux
 
Регистрация: 31.03.2008
Сообщений: 803
По умолчанию

Диалоговое окно перестало виснуть, но.. когда я после загрузки пытаюсь открыть загруженный файл возникает бредовая ошибка:

Функция GetDir(0,sPath), которую я использую выдает не путь к файлу программы, а путь к той папке в которой был выбран файл для загрузки в диалоге.

В общем пощелкал свойства opendialog, поставил ofNoChangeDir в True. Вроде заработало, но все равно причина ошибки не найдена, а это какой то корявый костыль получается.
Dux вне форума Ответить с цитированием
Старый 29.03.2016, 16:07   #9
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Зачем вам GetDir если нужен файл программы? Вы не в курсе, что текущая директория не всегда == папка программы?

Используйте ParamStr(0), Application.ExeName и т.п. + ExtractFilePath (если папка программы нужна, а не сам ехе).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.03.2016, 16:08   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
какой то корявый костыль получается
Это не костыль. Файловые диалоги по умолчанию меняют рабочий каталог проги, если не указано противное тем же ofNoChangeDir. Меняют точно также, как cd в cmd
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связь БД с программой на многих компьютерах Nezapomny Фриланс 5 07.06.2012 23:00
Не грузится БД на других компьютерах (Delphi) Ёжик в тумане БД в Delphi 4 01.04.2012 04:53
UpdateResource непашет на некоторых компьютерах dimusikus Win Api 0 02.06.2011 06:29
Локальная БД на нескольких компьютерах Kotjona БД в Delphi 2 21.01.2011 14:12
OpenDialog.Options:=OpenDialog.Options+[ofAllowMultiSelect]; necky Компоненты Delphi 2 11.08.2007 12:53