![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#11 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]() Цитата:
Да использование глобальной не желательно. Используйте в таких случаях поле класса Код:
Код:
Код:
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 07.10.2014
Сообщений: 10
|
![]() Код:
Такой вариант дает разные сообщения в memo1, что и требуется. |
![]() |
![]() |
![]() |
#13 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Переменные которые будут работать с потоком должны быть полями класса потока.
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#14 |
Пользователь
Регистрация: 07.10.2014
Сообщений: 10
|
![]()
Подниму тему, так как основной вопрос остался открытым. Можно ли сделать универсальную функцию получения информации из интернета, реализованную через потоки, вида
function GetData(url:string):string; с вызовом из разных частей основной программы, чтобы при выполнении кода внутри GetData программа не "подвисала" на неопределенное время? В основной части программы нужен следующий алгоритм: function getmode1(request:string):string; ... обработка переменной request и формирование переменной url и другая предварительная подготовка данных text:=GetData(url); здесь следует обработка полученной переменной text и формирование результата функции getmode1 ... function getmode2(request1,request2:integer) :string; ... обработка переменных request1, request2 и формирование переменной url и другая предварительная подготовка данных text:=GetData(url); здесь следует обработка полученной переменной text и формирование результата функции getmode2 ... ... и еще много таких getmode с разными по набору параметров ... То есть до переходов к обработке text нужно "дождаться" результата от GetData(url). Как это сделать, чтобы программа не "подвисала"? Последний раз редактировалось vahdorf; 10.10.2014 в 13:06. |
![]() |
![]() |
![]() |
#15 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]() Цитата:
Да -получение информации без остановки основной в принципе возможно. Нет - функция по своему определению должна дождаться получения результата. (т.е. зависание) НО! возможно написание процедуры в которой мы можем запустить поток и выйти не дожидаясь его завершения. И можем при этом попросить поток "проинфомировать" нас о завершении получения данных. для этого использовать процедурный тип. Код:
Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 10.10.2014 в 15:31. |
|
![]() |
![]() |
![]() |
#16 |
Пользователь
Регистрация: 07.10.2014
Сообщений: 10
|
![]()
Спасибо. Сейчас пробую запустить тест с предложенным вами кодом.
Поместил "TProcAfterGet =procedure(t: TThread) of object;" в раздел type модуля потока (может не туда нужно???), ошибка компиляции на строчке "property OnAfterGet: TProcAfterGet;" -> "[dcc32 Error] threads.pas(55): E2128 INDEX, READ or WRITE clause expected, but ';' found" |
![]() |
![]() |
![]() |
#17 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]() Цитата:
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 07.10.2014
Сообщений: 10
|
![]() |
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]()
"раcшифровка" property OnAfterGet
(то что должно было получиться по Shift Ctrl C) Код:
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Synchronize, Критические секции, другие варианты, что лучше для синхронизации потоков? | bilibian | Общие вопросы Delphi | 15 | 04.03.2014 10:57 |
Проблема синхронизации WinAPI потоков | Vadik(R) | Общие вопросы Delphi | 1 | 13.01.2014 01:27 |
AccessVolation при синхронизации потоков | hiho | Общие вопросы Delphi | 2 | 27.10.2012 08:29 |
Проблема синхронизации потоков | Teor | Общие вопросы .NET | 4 | 17.06.2011 15:50 |
Реализация функций синхронизации потоков. | натка | Помощь студентам | 1 | 03.01.2008 15:26 |