Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4

Модерирует : ShIvADeSt

ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

fcdobpiy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вопрос про потоки.
одним из ключевых моментов использования потоков это синхронизация доступа к объктам. Synchronize надо использовать когда то к чему обращаешься может быть использовано другими.
а вот такая ситуация
 
есть unit1 и есть datamodule1 с dataset1
в unit1 объявлен поток, который работает с dataset1. кроме этого потока явно никто не обращается к dataset1.  
Могу ли я работать из потока с dataset1 без всяких Synchronize и других ухищрений? Т.е. обращаться к datamodule1.dataset1... ?
 
реализовал это, все работает. но вот вдруг что не так?

Всего записей: 411 | Зарегистр. 22-08-2005 | Отправлено: 08:45 04-05-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fcdobpiy
можно работать так... Synchronize используется чаще всего для обращение к объектам VCL, а не к объектам которые могут использоваться другими потоками... если нужно из другого потока обратиться к одному объекту то используют чаще всего критические секции

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 09:33 04-05-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fcdobpiy

Цитата:
Могу ли я работать из потока с dataset1 без всяких Synchronize и других ухищрений? Т.е. обращаться к datamodule1.dataset1... ?  

Только если вы уверенны, что сам датасет не обратится ни к каким други обьектам, например Application, Screen...

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 10:53 04-05-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
то есть вы утверждаете, что если датасет прицеплен к гриду какому-либо, и начать в потоке двигаться по датасету, то будут AV из-за отрисовки движения в гриде?

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:08 04-05-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
Скорее всего да, но довольно редко.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 11:52 04-05-2009
fcdobpiy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
f3ka
Frodo_Torbins
спасибо.
 

Цитата:
что если датасет прицеплен к гриду

в этом случае согласен, могут появится проблемы. у меня же проще ситуация, с dataset работает только поток

Всего записей: 411 | Зарегистр. 22-08-2005 | Отправлено: 12:06 04-05-2009
SerGap



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Вин7 и Висте помоему, папки находящиеся в Program Files по умолчанию не разрешают производить изменение/удаление файлов находящихся в них. Может быть кто-нибудь знает как разрешить эту проблему программно ? Уточню - речь о том что мы в ручную можем задать в свойствах папки/файла на вкладке "Безопасность".
Или может у кого есть ссылки на подобные решения, буду благодарен.

Всего записей: 541 | Зарегистр. 21-12-2008 | Отправлено: 22:59 05-05-2009
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SerGap
http://sql.ru/forum/actualthread.aspx?tid=660459&pg=-1

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 00:32 06-05-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SerGap
Может лучше располагать такие файлы там, где им и место - в "\Users\*\AppData\Roaming"?

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 11:40 06-05-2009
SerGap



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
Спасибо, почитаю.
Frodo_Torbins
Надо подумать, все-таки это не просто файлы, а папка с моей программой. Т.е. написан простенький инсталлятор, который создает папку в Program Files, помещает туда нужные файлы. А при работе программа не может с ними работать. Все-таки удобнее некоторые файлы иметь в папке с программой и иметь к ним доступ, а так пока что получается что в папке может находится только exe-шник.

Всего записей: 541 | Зарегистр. 21-12-2008 | Отправлено: 18:32 06-05-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SerGap
А какая вам разница, где находятся файлы? Ведь вы же всеравно используете чтото наподобие GetWorkDir: String, и все модификации коснутся только этой функции. Единственный аргумент за - это портабл софт, но такие случаи почти всегда надо предусматиривать отдельно. А вот аргументов против полно, начиная от затруднения администрирования, и заканчивая пособничеством вирусописателям. Последний аргумент конечно звучит немного высокопарно, но это так - большинство вирусов не запускается под обычным пользователем. Поэтому заставляя юзера сидеть под админом, вы фактически помогаете вирмейкерам.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 19:34 06-05-2009 | Исправлено: Frodo_Torbins, 19:37 06-05-2009
SerGap



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Отчасти согласен, но абсолютно не собирался заставлять обычного юзера сидеть под админом, речь немного о другом, а именно - дать право текущему юзеру вносить изменения в указанной паке. Почему-же только портабл? Заглянем в папку любой установленной программы, что там увидим? - кучу файлов, почему они не в "\Users\*\AppData\Roaming" ?  наверно людям пишущим данный софт было выгодно/удобно чтоб файлы располагались рядышком с главным файлом. Так что вирмейкерам я не помощник.
А если по теме то если в верном направлении двигаюсь то интересует хоть самый простой примерчик по использованию этого http://msdn.microsoft.com/en-us/library/aa379579(VS.85).aspx
 

Всего записей: 541 | Зарегистр. 21-12-2008 | Отправлено: 20:54 06-05-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SerGap
Поехали дальше

Цитата:
Почему-же только портабл? Заглянем в папку любой установленной программы, что там увидим? - кучу файлов, почему они не в "\Users\*\AppData\Roaming" ?

Либо эти файлы никогда не меняются в процессе работы, либо прога не соответствует требованиям висты. Пример того как надо делать: Софт от майкрософта, FireFox, WinRAR, софт от Adobe, Nero...
Чем еще полезна папка Roaming? Изначально она создавалась для перемещаемых профилей. Пользователь логинится на любой компьютер в сети, и на этот комп с сервера копируются все данные этого пользователя, в том числе и папка Roaming. Если софт написан правильно, он подхватит настройки из этой папки, пусть даже раньше пользователь работал с этим софтом совсем на другой машине.
Или другой вариант: после установки винды эта папка была перемещена на диск D. Потом винда нечаянно слетела. Пользователь провел стандартную переустановку с форматированием диска C, установил софт. Запускает например браузер, и опа... все настройки на месте, как будто винда и не слетала.
 
Кстати, а в чем удобство хранить файлы рядом с программой? Путь ведь все равно всегда надо указывать полностью. Всякие Memo1.Lines.LoadFromFile('Myfile.txt') работают только до первого вызова OpenDialog-а.
P.S. С примером, к сожалению, помочь не могу.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 21:56 06-05-2009 | Исправлено: Frodo_Torbins, 21:59 06-05-2009
SerGap



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
Хорошо, убедили
Но в целях самообразования хотелось бы с функцией SetNamedSecurityInfo разобраться.
К сожалению ничего полезного гугл не выдает, одни реплики - "я сделал, у меня получилось", а как до конкретных примеров доходит, так сразу пропадает человек куда-то. Вобщем заковыристая какая-то функция.  
 
PS  
Еще вопрос немного в эту же тему, как программу от имени администратора запустить?
Для того чтоб в Program Files папку для своей программы создать.

Всего записей: 541 | Зарегистр. 21-12-2008 | Отправлено: 22:33 06-05-2009 | Исправлено: SerGap, 22:52 06-05-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SerGap

Цитата:
Еще вопрос немного в эту же тему, как программу от имени администратора запустить?

В манифесте надо прописать, что этой проге нужны права админа. Вот пример. Хотя гдето я читал, что достаточно, чтобы в названии экзе-файла было слово "Setup"

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 23:16 06-05-2009
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Кстати, а в чем удобство хранить файлы рядом с программой?

После переустановки винды переустановка программы не нужна, все и так работает, нужно лишь вытащить ярлык поближе

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 23:50 06-05-2009
SerGap



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не получилось с манифестом, не хочет папку создавать. Но как я посмотрел этих манифестов пруд пруди, наверно нужно подобрать нужный. Буду пробовать.

Всего записей: 541 | Зарегистр. 21-12-2008 | Отправлено: 00:12 07-05-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
Тут речь шла только о часто изменяемых файлах - как правило файлах настроек. Если программа не умеет их самостоятельно создавать при необходимости и не запускается без этих файлов, то это тоже можно считать глюком. Так что ваш сценарий тожде должен работать, просто потеряются пользовательские настройки.
 
Сейчас игрался с ситемой виртуализации висты. Прикольно Можно писать в "Program Files", а файлы все равно попадают в "\Users\*\AppData\Local\VirtualStore\Program Files". Дочего же майкрософт со своей совместимостью дошел.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 13:42 07-05-2009
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Тут речь шла только о часто изменяемых файлах - как правило файлах настроек. Если программа не умеет их самостоятельно создавать при необходимости и не запускается без этих файлов, то это тоже можно считать глюком.

Я не об этом. Мои слова были в контексте вашего предыдущего (перед процитированным) предложения:

Цитата:
и опа... все настройки на месте, как будто винда и не слетала

 
Т.е. при помещении файлов настроек (в том числе и пользовательских) рядом с программой делает это самое "опа" гораздо более приятным, т.к. достигается быстрее и удобнее

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 14:42 07-05-2009
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget

Цитата:
Т.е. при помещении файлов настроек (в том числе и пользовательских) рядом с программой делает это самое "опа" гораздо более приятным, т.к. достигается быстрее и удобнее  

Для вас то оно может и удобнее, но вот для пользователей не очень, т к обычно по такой схеме настройки будут одни для всех пользователей. Да и администратор не сможет заблокировать доступ к папке, чтобы защитиь ее от шаловливых ручек всяких кулхацкеров. Именно для таких программ вся эта вистовая виртуализация и придуманна. Тоесть хотите вы того или нет, а файлы все равно будут хранится где положено
P.S. Правда работает эта виртуализация только для обычных пользователей, как я понял.

Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 17:42 07-05-2009 | Исправлено: Frodo_Torbins, 17:51 07-05-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 4
ShIvADeSt (28-06-2009 02:10): Продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=10477


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru