Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.22;
Скачать: CL | DM;

Вниз

как корректно закрыть программу если отсоед родительский диск?   Найти похожие ветки 

 
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 и физ. памяти.


 
KSergey ©   (2009-01-13 05:40) [41]

ну вот, проснулся с ответом, ага...


 
Ega23 ©   (2009-01-13 11:03) [42]


> Если он уже спит, то в чем смысл вставления флешки?


Появляется возможность посидеть, чтобы тебя не дёргали каждые 5 минут.


 
happynewyear   (2009-01-13 12:26) [43]


> Появляется возможность посидеть, чтобы тебя не дёргали каждые
> 5 минут.


похоже Leonid Troyanovsky © на счет контента был прав :)


 
Ega23 ©   (2009-01-13 12:32) [44]


> похоже Leonid Troyanovsky © на счет контента был прав :)


Я порнуху на винте храню, на флэшке задолбаешься 40 гиг носить.



Страницы: 1 2 вся ветка

Текущий архив: 2009.02.22;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.017 c
15-1229937682
Calligraff
2008-12-22 12:21
2009.02.22
Delphi - Толи лыжи не едут толи я ... ненормальный


2-1231518350
happynewyear
2009-01-09 19:25
2009.02.22
как корректно закрыть программу если отсоед родительский диск?


15-1229937030
Ega23
2008-12-22 12:10
2009.02.22
Любопытная статья.


2-1231673189
Pavel
2009-01-11 14:26
2009.02.22
Выполнение SQL-скрипта в Delphi


15-1229898775
[Ждущий]
2008-12-22 01:32
2009.02.22
Долго открывается список с локальными дисками