Форум: "Начинающим";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];
Внизкак корректно закрыть программу если отсоед родительский диск? Найти похожие ветки
← →
happynewyear (2009-01-09 19:25) [0]Преветствую! вопрос в теме..
← →
asail (2009-01-09 19:57) [1]Так-же, как и если не отсоед...
Например, MainForm.Close или Application.Terminate...
← →
happynewyear (2009-01-09 20:02) [2]вот что получается
exception eexternal exception in modulу project1.exe at ....
← →
asail (2009-01-09 20:10) [3]И что? При чем тут диск, к тому-же родительский?
У меня прога запускается с флэшки, затем флэшка вынимается, затем через какое-то время прога закрывается... Ни каких eexternal exception не заметно... Ни каких особых ухищрений при закрытии не делалось.
← →
happynewyear (2009-01-09 20:23) [4]попробовал на чистом проэкте - ве норм...
похоже какой-то компонент себя так ведет...
буду рыть дальше..
← →
Сергей М. © (2009-01-09 21:01) [5]
> родительский диск
Что за зверь ?
← →
Leonid Troyanovsky © (2009-01-09 23:35) [6]
> Сергей М. © (09.01.09 21:01) [5]
> > родительский диск
> Что за зверь ?
Это предок всех существующих ныне дисков,
вымерший еще в доинтернетовские времена.
Вероятно, подразумевался его сакральный образ.
--
Regards, LVT.
← →
Германн © (2009-01-10 00:57) [7]
> Leonid Troyanovsky © (09.01.09 23:35) [6]
>
Теперь, пожалуйста поясни что за зверь отсоед? Кто и/или что является его обычной пищей.
← →
имя (2009-01-10 22:55) [8]Удалено модератором
← →
antonn © (2009-01-10 22:59) [9]отсоединен
← →
имя (2009-01-10 23:05) [10]Удалено модератором
← →
KSergey © (2009-01-11 10:52) [11]> happynewyear (09.01.09 20:23) [4]
> попробовал на чистом проэкте - ве норм...
> похоже какой-то компонент себя так ведет...
вероятно кто-то патыется писать/читать на/с родительского диска, который "отсоед" во время завершения программы.
Вообще я от чего-то считаю, что тут уже пользователь дурак: система на такое не рассчитана, и в ней есть спецовая функция - "отключить флешку", которая ее корректно отключает или нет в зависимости от возможности отключить ее в данный момент времени.
← →
Медвежонок Пятачок © (2009-01-11 11:06) [12]это мамин диск. или папин. родительский короче.
← →
happynewyear (2009-01-12 12:41) [13]ценю чувство юмора выше высказавшихся :)
я где-то так и ожидал... :)
отсоед - это сокращенно ... anton шутить не стал....
просто длины темы не хватало на полные слова.
родительский диск - тут то же самое, что и label1.parent, например...
короче, тот диск с которого запустилось приложение в данном случае флешка, например...
ну пользователь может и дурак, но неужели вы всегда пользуетесь "безопасным извлечением устройства"?
я думаю, что не во всех 100% случаев
я вот задумал предусмотреть такую "оплошность", и приложение "смотрит" есть ли флешка и если нет, то завершает работу само...
← →
Ega23 © (2009-01-12 12:46) [14]
> родительский диск - тут то же самое, что и label1.parent,
> например...
> короче, тот диск с которого запустилось приложение в данном
> случае флешка, например...
Это не то же самое. Label1.Parent - это TWinControl, тогда как то, с чего запустилось приложение - это нечто физическое.
> но неужели вы всегда пользуетесь "безопасным извлечением
> устройства"?
Не поверишь - да. Не пользуюсь только в одном случае - когда комп выключен.
← →
clickmaker © (2009-01-12 13:01) [15]> и приложение "смотрит" есть ли флешка и если нет
Application.ExeName или ParamStr(0)
первый символ - буква диска.
Можно попробовать сделать его текущим или получить инфу о нем.
Если не получилось, то скорей всего его уже нет
← →
happynewyear (2009-01-12 13:05) [16]
> Это не то же самое. Label1.Parent - это TWinControl
ну это понятно ))))))))))))
← →
happynewyear (2009-01-12 13:08) [17]
> > но неужели вы всегда пользуетесь "безопасным извлечением
>
> > устройства"?
>
>
> Не поверишь - да. Не пользуюсь только в одном случае - когда
> комп выключен.
даже тогда, когда, например, ребенок (не знающий о вашем идеальном отношении к этому вопросу) подошел к компу и вытащил флеху?
← →
happynewyear (2009-01-12 13:14) [18]
> clickmaker © (12.01.09 13:01) [15]
> > и приложение "смотрит" есть ли флешка и если нет
>
> Application.ExeName или ParamStr(0)
> первый символ - буква диска.
> Можно попробовать сделать его текущим или получить инфу
> о нем.
> Если не получилось, то скорей всего его уже нет
и в том и другом случае приложение покажет вам то, что вы ожидаете увидеть при присутствующем диске, но так и при отстутствующем...
я делаю так:
if not FileExists(Application.ExeName) then close;
← →
Ega23 © (2009-01-12 13:21) [19]
> даже тогда, когда, например, ребенок (не знающий о вашем
> идеальном отношении к этому вопросу) подошел к компу и вытащил
> флеху?
Я если и вставляю флэшку в ноут, то только тогда, когда ребёнок уже спит.
Спор беспредметный. В чём вопрос-то?
← →
antonn © (2009-01-12 13:28) [20]
> Ega23 © (12.01.09 13:21) [19]
>
>
> Спор беспредметный.
Это не спор беспредметный, это кто то не хочет внять доводам оппонента :)
← →
happynewyear (2009-01-12 13:46) [21]2 Ega23 ©
похоже вы хотите сказать, что как минимум этот вопрос вы контроллируете, как минимум на 100%
Жизнь покажет :)
← →
Anatoly Podgoretsky © (2009-01-12 14:04) [22]
> то завершает работу само...
Здесь тоже длины не хватило?
← →
happynewyear (2009-01-12 14:10) [23]
> Anatoly Podgoretsky © (12.01.09 14:04) [22]
>
> > то завершает работу само...
>
> Здесь тоже длины не хватило?
p.s. приложение ... само ...
p.s.2 каждый бывает невнимателен, и вы тоже не исключение...
p.s.3 ну а троеточие - это троеточие :), может их много, но никто не идеален :)))
← →
happynewyear (2009-01-12 14:12) [24]
> Anatoly Podgoretsky © (12.01.09 14:04) [22]
>
> > то завершает работу само...
>
> Здесь тоже длины не хватило?
видимо считаете чтослово само не имеет право насуществование...
ок, лично для вас ...самостоятельно...
← →
Anatoly Podgoretsky © (2009-01-12 14:38) [25]
> p.s.3 ну а троеточие - это троеточие :), может их много,
> но никто не идеален :)))
Когда много - это многоточие.
← →
happynewyear (2009-01-12 14:46) [26]
> Когда много - это многоточие.
тут тонко подмечено :)
← →
asail (2009-01-12 15:21) [27]А что мешает проге работать если флэшка, с которой она запущена вынута? Например, возьми calc.exe (тот что в windows\system32) скопируй на флэшку, запусти с нее, вынь флэшку. Работает как миленький...
Нафига прогу закрывать, если диск вынут?
← →
antonn © (2009-01-12 15:33) [28]
> asail (12.01.09 15:21) [27]
наверное по той же причине, почему нельзя удалить запущенную программу :)
← →
clickmaker © (2009-01-12 15:38) [29]> Работает как миленький
там ресурсов мало. он все их в память подгрузил и работает
а если ресурсов много, можно их по мере надобности с диска подгружать
← →
happynewyear (2009-01-12 15:40) [30]дело в том, что для работы проги нужен некий файл который лежит на этом же, пардон, "родительском диске", и к которому прога обращается через определенные промежутки времени, т.е. если его нет - то проге делать нечего - она должна закрыться...
вот для этого и мониторится сие действие.
приложение, что называется "Portable", и рассчитано для использования по большей части с флешки.
тот файл блокируется от удаления, хотя извратится можно, и удалить не смотря на блокировку, но проще вытащить флешку
p.s. плюсы и минусы и другие недочеты еще изучаются, окончательно еще все не обдумано.
← →
Ega23 © (2009-01-12 15:58) [31]
> дело в том, что для работы проги нужен некий файл который
> лежит на этом же, пардон, "родительском диске", и к которому
> прога обращается через определенные промежутки времени,
> т.е. если его нет - то проге делать нечего - она должна
> закрыться...try
Открыть_Некий_Файл_Для_Работы;
except
Завершить_Работу;
end;
← →
Riply © (2009-01-12 16:07) [32]> [27] asail (12.01.09 15:21)
> А что мешает проге работать если флэшка, с которой она запущена вынута?
> Например, возьми calc.exe (тот что в windows\system32) скопируй на флэшку,
> запусти с нее, вынь флэшку. Работает как миленький...
> Нафига прогу закрывать, если диск вынут?
Не уверена, что exe-файл, всегда загружается в память целиком.
Если это так, то программе, в процессе работы, может потребоваться обращение к нему.
← →
Ega23 © (2009-01-12 16:27) [33]
> Не уверена, что exe-файл, всегда загружается в память целиком.
Розыч нужОн. Саня, ау!!!
← →
Германн © (2009-01-12 17:29) [34]
> Не уверена, что exe-файл, всегда загружается в память целиком.
В Windows же загрузчик читает лишь заголовок и таблицу импорта файла, а затем проецирует его на адресное пространство процесса так, будто бы файл является частью виртуальной памяти, хранящейся на диске. (Вообще-то, все происходит намного сложнее, но не будем вдаваться в подробности, не относящиеся к делу). Подкачка с диска происходит динамически - по мере обращения к соответствующим страницам памяти, причем загружаются только те из них, которые действительно нужны.
Например, если в текстовом редакторе есть модуль работы с таблицами, он не будет загружен с диска до тех пор, пока пользователь не захочет создать (или отобразить) свою таблицу. Причем неважно - находится ли этот модуль в динамической библиотеке или в основном файле! (Вот и попробуйте после этого сказать, что Windows глупые люди писали!) Загрузка таких "монстров", как Microsoft Visual Studio и Word, как бы "размазывается" во времени и к работе с приложением можно приступать практически сразу же после его запуска
(c) Крис Касперски
← →
clickmaker © (2009-01-12 17:54) [35]> которому прога обращается через определенные промежутки
> времени, т.е. если его нет - то проге делать нечего
тогда вообще непонятно, в чем проблема... сам же себе и ответил в [18]
← →
asail (2009-01-12 18:06) [36]
> Riply © (12.01.09 16:07) [32]
> Германн © (12.01.09 17:29) [34]
> clickmaker © (12.01.09 15:38) [29]
Все так! Тока я чего-то сомневаюсь, что здесь речь о чем-то типа Microsoft Visual Studio идет... :)
А, вообще, извратиться всегда можно. Было бы желание! Например, прога-загрузчик запускается с флэшки, копирует исполняемый файл с нее-же куда-либо, там запускает и отмирает... Флэшку можно смело отрубать... Прога работает! Нафига? Это уже не мне вопрос.
← →
Leonid Troyanovsky © (2009-01-12 18:20) [37]
> Riply © (12.01.09 16:07) [32]
> Не уверена, что exe-файл, всегда загружается в память целиком.
Если он грузится с removable, то, для начала, копируется целиком в своп.
То же самое и с dll.
Попробуй, а детали можешь поискать у Д.Рихтера.
Для C есть, IMHO, и некий ключ для таких PE.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2009-01-12 19:04) [38]
> Ega23 © (12.01.09 13:21) [19]
> Я если и вставляю флэшку в ноут, то только тогда, когда
> ребёнок уже спит.
Если он уже спит, то в чем смысл вставления флешки?
Хотя может, конечно, там контент подходящий :)
--
Regards, LVT.
← →
Riply © (2009-01-13 00:25) [39]> [37] Leonid Troyanovsky © (12.01.09 18:20)
> Попробуй, а детали можешь поискать у Д.Рихтера.
> Для C есть, IMHO, и некий ключ для таких PE.
Спасибо.
P.S.
Т.к. заинтересовало, придется посмотреть :)
← →
KSergey © (2009-01-13 05:37) [40]> Riply © (12.01.09 16:07) [32]
> Не уверена, что exe-файл, всегда загружается в память целиком.
>
> Если это так, то программе, в процессе работы, может потребоваться обращение к нему.
для дочитывания ресурсов, например, как уже говорилось.
Да и вообще exe-файл мапится на память, а не загружается в полном смысле этого слова, так что зависит от соотношения размеров выполняемой части exe и физ. памяти.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.02.22;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.006 c