Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.12.2013, 16:26
alanatolich alanatolich вне форума
Прохожий
 
Регистрация: 24.12.2013
Сообщения: 18
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию Перебор объектов в потоке

Помогите с перебором объектов.
Задача такая есть основной поток приложения, который в свою очередь запускает еще один поток, в котором динамически создается N-e количество объектов. Как после создания этих объектов, к ним обратиться?

Код:
procedure TMyThread.Execute;
var i: Integer;
begin
    // создаем сокеты
    for I :=0 to NumberClientSocket do
    begin
        MYClientSocket:=TClientSocket.Create(nil);
        MYClientSocket.Name:='MS'+inttostr(I);
        //настраиваем сокеты
        ...
    end;
    while True do
    begin
          // нужно обращаться к свойствам определенного сокета
          ...
    end;
        // освобождаем все сокеты
        ...
end;

Последний раз редактировалось M.A.D.M.A.N., 24.12.2013 в 17:23.
Ответить с цитированием
  #2  
Старый 24.12.2013, 16:33
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от alanatolich
Помогите с перебором объектов.
Задача такая есть основной поток приложения, который в свою очередь запускает еще один поток, в котором динамически создается N-e количество объектов. Как после создания этих объектов, к ним обратиться?
Сохраняй указатели на созданные объекты в массив или например в TList и т.п.
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
alanatolich (24.12.2013)
  #3  
Старый 24.12.2013, 17:15
alanatolich alanatolich вне форума
Прохожий
 
Регистрация: 24.12.2013
Сообщения: 18
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

использую TList

Код:
var termial:TStringList;
  I: Integer;
    myList:TList;
begin
    // создаем список
    MYList := TList.Create;
    // создаем сокеты
    for I :=0 to NumberClientSocket do
    begin
        MYClientSocket:=TClientSocket.Create(nil);
        MYClientSocket.Name:='MS'+inttostr(I);
        MYList.Add(MYClientSocket);
    end;
    while True do
    begin
        MYClientSocket(myList[0]).Open;// ошибка подскажите что не так
    end;
end;
MAD: оформляйте код, или последует бан.

ошибка : E2066 Missing operator or semicolon

Последний раз редактировалось M.A.D.M.A.N., 24.12.2013 в 17:25.
Ответить с цитированием
  #4  
Старый 24.12.2013, 17:20
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от alanatolich
.....
MYClientSocket(myList[0]).Open;// ошибка подскажите что не так
.....
Преобразовывать нужно к типу, а не к переменной:
Код:
TClientSocket(myList[0]).Open;
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
alanatolich (24.12.2013)
  #5  
Старый 24.12.2013, 17:53
alanatolich alanatolich вне форума
Прохожий
 
Регистрация: 24.12.2013
Сообщения: 18
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

poli-smen спасибо огромное за помощь.
как теперь освободить?


Код:
     for i := 0 to myList.Count-1 do
     begin
           MYClientSocket(myList[i]).free;
     end;
     MYList.free;

верно ли освобождаю?

Последний раз редактировалось alanatolich, 25.12.2013 в 09:04.
Ответить с цитированием
  #6  
Старый 24.12.2013, 17:59
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от alanatolich
poli-smen спасибо огромное за помощь.
как теперь освободить?


for i := 0 to myList.Count-1 do
begin
MYClientSocket(myList[i]).free;
end;
MYList.free;

верно ли освобождаю?
Нет, неправильно. Преобразования к переменной не существует. Нужно преобразовывать к типу:
Код:
TClientSocket(myList[i]).Free;
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
alanatolich (25.12.2013)
  #7  
Старый 25.12.2013, 08:58
alanatolich alanatolich вне форума
Прохожий
 
Регистрация: 24.12.2013
Сообщения: 18
Версия Delphi: Delphi XE
Репутация: 10
По умолчанию

да точно . На те же грабли, спасибо еще раз
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:51.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025