Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2012, 11:18   #1
DimoK123
Пользователь
 
Регистрация: 31.10.2012
Сообщений: 28
По умолчанию for to do не работает

Всем привет. Возможно вопрос глупый. И я почему-то уверен, что делаю не правильно. С потоками никак не могу разобраться. Не могу вьехать >_<

В общем. Есть такое:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
pot:integer;
begin
for pot:=1 to Form1.SpinEdit1.Value+1 do
  a[pot]:=potok.Create(false);
end;

procedure potok.Execute;
var
i,p:integer;
begin
sleep(100);
synchronize(synchro);
end;


procedure potok.synchro;
begin
inc(nom);
rdp[nom].Server:=Form1.advstringgrid2.cells[0,nom];
rdp[nom].UserName:=Form1.advstringgrid2.cells[1,nom];
rdp[nom].AdvancedSettings2.ClearTextPassword:=Form1.advstringgrid2.cells[2,nom];
rdp[nom].Connect;
end;
Всё работает вроде нормально. Но, мне надо повторять действие до последней строки в гриде. Пытался сделать так

Код:
procedure potok.Execute;
var
i,p:integer;
begin
for i:=1 to Form1.Advstringgrid2.RowCount-1 do
begin
sleep(100);
synchronize(synchro);
end;
end;
Но никакой реакции. Подскажите пожалуйста, что делать?
Спасибо заранее.
DimoK123 вне форума Ответить с цитированием
Старый 03.12.2012, 11:31   #2
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Начни с выяснения зачем вообще в твоей задаче нужны доп.потоки.
xoodoo вне форума Ответить с цитированием
Старый 03.12.2012, 11:34   #3
DimoK123
Пользователь
 
Регистрация: 31.10.2012
Сообщений: 28
По умолчанию

Ну, у меня есть список айпи адресов. И мне надо одновременно к ним подключатся.
Мне кажется, тут без потоков никак.
Можно сделать всё циклом одним, но для дальнейших планов цикл мне не подходит.
DimoK123 вне форума Ответить с цитированием
Старый 03.12.2012, 12:00   #4
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Нужны или не нужны потоки для подключения и для "дальнейших планов"- это напрямую зависит от режима работы rdp-компонентов - синхронный (блокирующий), асинхронный (неблокирующий), асинхронный с событийными нотификациями.
xoodoo вне форума Ответить с цитированием
Старый 03.12.2012, 12:09   #5
DimoK123
Пользователь
 
Регистрация: 31.10.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от xoodoo Посмотреть сообщение
Нужны или не нужны потоки для подключения и для "дальнейших планов"- это напрямую зависит от режима работы rdp-компонентов - синхронный (блокирующий), асинхронный (неблокирующий), асинхронный с событийными нотификациями.
Прошу прощение. Можно как-то поподробней? А то не очень понятно(
И есть ли ответ на мой вопрос?
DimoK123 вне форума Ответить с цитированием
Старый 03.12.2012, 12:12   #6
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
не очень понятно
Что конкретно ?

Цитата:
есть ли ответ на мой вопрос?
Есть.
for to do вполне себе нормально работает.
xoodoo вне форума Ответить с цитированием
Старый 03.12.2012, 12:24   #7
DimoK123
Пользователь
 
Регистрация: 31.10.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от xoodoo Посмотреть сообщение
Что конкретно ?
Про режимы работы.

Цитата:
Сообщение от xoodoo Посмотреть сообщение
Есть.
for to do вполне себе нормально работает.
Почему же у меня не работает данный цикл?

Если вместо

Код:
inc(nom);
rdp[nom].Server:=Form1.advstringgrid2.cells[0,nom];
rdp[nom].UserName:=Form1.advstringgrid2.cells[1,nom];
rdp[nom].AdvancedSettings2.ClearTextPassword:=Form1.advstringgrid2.cells[2,nom];
rdp[nom].Connect;
Например пропишу

Код:
inc(nom);
form1.memo1.lines.add('123');
То цикл работает. А так не хочет почему-то.

Прошу прощение за глупые вопросы. Я всего пару недель в делфи
DimoK123 вне форума Ответить с цитированием
Старый 03.12.2012, 12:40   #8
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
Про режимы работы
Курс лекций прочитать ?
Ты же даже не соизволил конкретизировать что за rdp-компонент ты задействовал ..

Цитата:
не хочет почему-то
Так прямо и говорит "не хочу почему-то" ?
xoodoo вне форума Ответить с цитированием
Старый 03.12.2012, 12:48   #9
DimoK123
Пользователь
 
Регистрация: 31.10.2012
Сообщений: 28
По умолчанию

Цитата:
Сообщение от xoodoo Посмотреть сообщение
Курс лекций прочитать ?
Ты же даже не соизволил конкретизировать что за rdp-компонент ты задействовал ..
Ну сорри, просто как я знаю, есть всего один рдп компонент на делфи, а именно MSTSCLib_TLB. Тут использую MsRdpClient6.


Цитата:
Сообщение от xoodoo Посмотреть сообщение
Так прямо и говорит "не хочу почему-то" ?
Ноль реакции. Что с циклом, что без него выполняет только один раз.

Компонент динамический. Создаю так

Код:
var
   rdp:Array of TMsRdpClient6;
Код:
procedure TForm1.Button4Click(Sender: TObject);
var
n,i: Integer;
tab: ttabsheet;
proj:IMsRdpClientAdvancedSettings;
begin

 n := SpinEdit1.Value+1;
  SetLength(rdp, n+1);
  for i := 1 to n-1 do
with advstringgrid2 do
begin

tab:=ttabsheet.Create(PageControl1);
tab.parent:=PageControl1;
tab.visible := true;
tab.name:='tab'+inttostr(i);
tab.caption :=cells[0,i];
tab.pagecontrol := pagecontrol1;

rdp[i]:=TMsRdpClient6.Create(tab);
rdp[i].Name:='rdp'+inttostr(i);
rdp[i].Parent:=tab;
rdp[i].Left:=15;
rdp[i].Top:=15;
rdp[i].Width:=580;
rdp[i].Height:=390;
rdp[i].ConnectingText:='Подключение к серверу: ' +cells[0,i];
rdp[i].OnConnected:=OnConnected;
rdp[i].OnLoginComplete:=OnLoginComplete;
rdp[i].OnLogonError:=OnLogonError;
rdp[i].OnDisconnected:=OnDisconnected;
if rdp[i].AdvancedSettings.QueryInterface(ImsRdpclientAdvancedSettings, proj) = S_OK then
proj.Set_singleConnectionTimeout(SpinEdit2.Value);


end;

end;

Последний раз редактировалось DimoK123; 03.12.2012 в 12:50.
DimoK123 вне форума Ответить с цитированием
Старый 03.12.2012, 13:01   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Бреакпоинты ставил?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает relese версия проги и debug работает тока на моем компе D][mon C# (си шарп) 2 04.05.2012 20:21
Программа работает пошагово, но не работает при запуске -Katerina- Microsoft Office Excel 3 12.07.2011 03:40
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04