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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2012, 02:51   #1
Emperator12
Пользователь
 
Регистрация: 19.09.2012
Сообщений: 13
По умолчанию потоки / количество потоков

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Delay(dwMilliseconds: Longint);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TMyThread = class(TThread)

    private
    { Private declarations }
  protected

    procedure Execute; override;
    procedure UpdateCaption;
  end;

var
  Form1: TForm1;
  MyThread: Array of TMyThread;
  index: integer;

implementation

{$R *.dfm}

procedure TMyThread.UpdateCaption;
begin
  form1.memo1.Lines.Add('index['+inttostr(index)+']')
end;

procedure TForm1.Delay(dwMilliseconds: Longint);
var
   iStart, iStop: DWORD;
 begin
   iStart := GetTickCount;
   repeat
     iStop := GetTickCount;
     Application.ProcessMessages;
   until (iStop - iStart) >= dwMilliseconds;
 end;

procedure TMyThread.Execute;
begin
for index:= 0 to 10 do
  Synchronize(UpdateCaption);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=0 to 10 do
  MyThread[i]:=TMyThread.Create(true);
  MyThread[i].FreeOnTerminate:=true;
  MyThread[i].Resume;
end;

end.
Пытаюсь задать количество потоков, но выдает ошибку. Где ошибка в коде ?

Еще один вопрос.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    IdHTTP1: TIdHTTP;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TMyThread = class(TThread)
  HTTP: TIdHTTP;
    procedure UpdateCaption;
    private
    { Private declarations }
  protected

    procedure Execute; override;
  end;

var
  Form1: TForm1;
  MyThread: TMyThread;

implementation

{$R *.dfm}

procedure TMyThread.UpdateCaption;
begin
  form1.Label1.Caption:= 'åñòü';
end;



procedure TMyThread.Execute;
begin


if Pos('www.artlebedev.ru', HTTP.Get('http://ya.ru')) <> 0 then
  Synchronize(UpdateCaption);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=0 to 10 do
  MyThread:=TMyThread.Create(true);
  MyThread.FreeOnTerminate:=true;
  MyThread.Resume;
end;

end.
Почему код не выполняется ? просто не выполняется поток..

Последний раз редактировалось Emperator12; 29.09.2012 в 03:32.
Emperator12 вне форума Ответить с цитированием
Старый 29.09.2012, 13:40   #2
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Сообщение от Emperator12 Посмотреть сообщение
Почему код не выполняется ? просто не выполняется поток..
Должен выполняться! Вы как смотрите, что не выполняеться? По Label?
И какую ошибку выдает???? При компиляции или в Run-Time?

Последний раз редактировалось Delphi_ProGer; 29.09.2012 в 13:43.
Delphi_ProGer вне форума Ответить с цитированием
Старый 29.09.2012, 13:48   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

В первом коде динамический массив MyThread не определён в размерах (см ф-ию setlength)

Первый код бессмысленно применять, т.к. вся работа в синхронизации идёт, а второй код опасно применять, т.к. HTTP.Get не синхронизировано, именно поэтому, ИМХО, и не работает

P.S. Код не проверял

Последний раз редактировалось eoln; 29.09.2012 в 13:51.
eoln вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки, как ограничить количество? bakanaev Общие вопросы Delphi 2 16.08.2012 16:55
определить количество четных чисел и количество нечетных чисел массива, которые вводятся в МЕМО, вывести в поле компонента Edit. Pyxy Помощь студентам 2 21.03.2012 23:24
Задана последовательность чисел в формате:сначала количество цифр в числе, потом - цифры числа. Подсчитать количество. Arn1 Помощь студентам 4 03.10.2011 20:03
Подсчитать количество слов и количество букв MDSIQ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 13.11.2010 16:57
количество цифр и количество символов до первой гласной буквы 111111 Общие вопросы C/C++ 2 22.12.2008 12:15