![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Andreyzpr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: 1 Всего: 1 |
Тоесть ты говориш про переменную TempString? |
|||
|
||||
| Rennigth |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
вот например такой примерчик. Не покушаюсь на оптимальнось и оригинальность. Хендлы тож конечно поздно закрываются, но с евентами не хочется возится. Я поэтому и предлагал TThread использовать Добавлено через 4 минуты и 12 секунд нет я о том что нельзя из отдельного потока напрямую использовать VCL. Я вот об этом:
Это не потоко безопасно! В моем примере передача данных форме сделана через очередь сообщений, это один из самых простых способов. Иначе, надо ручками организовывать синхронизацию, что без определенного опыта(которого и у меня особо нету) проблематично. -------------------- (* Honesta mors turpi vita potior *) |
||||
|
|||||
| Andreyzpr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: 1 Всего: 1 |
ууууууууууу :( :( :( :( :(
А мой код в чувство никак привести нельзя? Вроде ж все работает, а по завершении цикла :( :( :( !! |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
К сожалению нет Добавлено через 4 минуты и 19 секунд Andreyzpr, чтобы понять почему так почитай, хошая статья http://forum.vingrad.ru/topic-60076.html Добавлено через 8 минут и 40 секунд Andreyzpr, ты попробуй мой пример, там ничего сверх естественного нету. Работать с сетью в отдельном потоке можно, ничего страшного не будет. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| Andreyzpr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: 1 Всего: 1 |
Я уже ту статью читал :(
Я совершенно не могу понять твоего кода.. что и куда вставить!!, КАк я могу не использовать VCL если мне результат выводить надо... Незнаю что такое constructor; И самое плохое то что я показал была упращеная версия, и если бы она заработала там бы намного больше циклов шло бы.... А из за чего неработоспособна моя версия? Что там создает ошибку? |
|||
|
||||
| Rennigth |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
Constructor/Destructor это примерно тоже самое что и события OnFormCreate/OnFormDestroy, все можно было и туда вставить, просто я так привык
В моем примере же выводиться. Обрати внимание на то, что я из процедуры трэда выполняю PostMessage, т.е. я посылаю сообщение главной форме с текстом "сканируем адрес и т.д.". А главная форма ловит это сообщение(метод ThreadInfoEvent) , и уже она добавляет этот текст в memo.
1. То что напрямую обращаешся к VCL. 2. Перед тем как ты передаешь указатель на параметр в процедуру трэда, ты для нее явно не выделяешь память, в итоге при выходе из области видимости, дельфи сама подчишает память, а ты в трэде пыташься ее использовать. Но это уже даже проблема не то что отдельный трэд, а так устроена дельфи, это просто всегда надо учитывать. Это сделано вприципе для облегчения жизни делфи-программиста, но есть случаи(как данный), когда это доставляет определенные трудности. Это сообщение отредактировал(а) Rennigth - 12.10.2007, 18:10 -------------------- (* Honesta mors turpi vita potior *) |
||||
|
|||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
я бы так не стал делать никто не гарантирует, что сообщение будет обработано до того, как освободится память под ltmp после завершения потока -------------------- There are always someone smarter than you... |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
MetalFan,
мб... А если подумать то еще надо посмотреть как устроен PostMessage. Ведь когда отправляешь сообщение другому процессу ты же не заботишься о сохранности памяти... тем более что она выделена в другом процессе... -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 3 Всего: 158 |
а выделение памяти в контексте АП получателя - это работа для WM_COPYDATA, причем SendMessage. если и посылать асинхронно в пределах одного АП, то тогда выделять перед посылкой и освобождать после приема. хотя в данном конкретном случае неявную помощь может оказать "вумный" стринг - но тут я ни разу не уверен. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
сорь, но не понял, о чем речь -------------------- There are always someone smarter than you... |
|||
|
||||
| Andreyzpr |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: 1 Всего: 1 |
Думал, думал.. всетаки додумался как провернуть с переменными.. вроде работает, правда на 100% не уверен в работоспособности... Сделал таким способом:
Запуск?
где a это массив а index Integer; Сама процедура:
Вообщм по такому принципу пустил... Впринципе, можно и ставить вопрос решенным, т.к. по другому ничего придумать нельзя :( :( :( |
||||
|
|||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 22 Всего: 128 |
нехорошо очень нехорошо можно. плохо видимо придумывал -------------------- There are always someone smarter than you... |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 3 Всего: 158 |
![]() слов нет. одни эпитеты. и те не для огласки. Andreyzpr, если ты не хочешь понимать, что и как происходит, то не мучай ни себя, ни других, а просто задай вопрос в ЦП. такое впечатление, что человек просто проигнорил все ответы от начала и до конца топа... |
|||
|
||||
| Andreyzpr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 4.2.2007 Где: Украина Репутация: 1 Всего: 1 |
НУ я совершенно не понимаю ваших данный мне кодов! Это одно и тоже что я буду ехать на машине и не знать конструкции двигателя, и где то посередине дороги она сломается, и как мне ее дальше ремонтировать?
Ну скопирую я сейчас код, вставлю его, что от этого изменится? Захочу чтото подменить, добавить, или со временем усовершенствовать - а что там и как совершенно не понимаю и ничего не смогу сделать...!!! Поэтому смысла тупо выделить тот код, нажать Ctrl+C, на форме Ctrl+V не вижу... Добавлено через 1 минуту и 12 секунд Ну вон вы говорили про PostMessage, а я не знаю что оно такое! Не пойму о чем спор там идет... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Andreyzpr ты уже едешь на поломаной машине. Нужно подучить работу с потоками, а то будешь ломаться машина каждые 200м.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |