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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2010, 20:40   #1
Coder86
Новичок
Джуниор
 
Регистрация: 09.06.2010
Сообщений: 6
Вопрос Потоки

Помогите узнать в чем проблема?

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;

procedure Button1Click(Sender: TObject);
private
public
end;

type
TNewThread=class(TThread)
IdHTTP1:TIdHTTP;

private
protected
procedure Execute; override;
end;

var
Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var j:integer;
NewThread: TNewThread;
begin
for j:=0 to strtoint(edit1.text) do begin
NewThread:=TNewThread.Create(true);
NewThread.FreeOnTerminate:=true;
NewThread.Priority:=tpTimeCritical;
NewThread.Resume;
end;

label1.Caption:='OK!';
end;

procedure TNewThread.Execute;
var txt:tstringlist;
begin
IdHTTP1:=TIdHTTP.Create;
txt:=tstringlist.Create;
txt.add('u=12345');
IdHTTP1.POST('http://yandex.ru?',txt);
end;

end.

На этой строке IdHTTP1:=TIdHTTP.Create; - ошибка.
Coder86 вне форума Ответить с цитированием
Старый 09.06.2010, 20:48   #2
bitSoft
Programming...
Форумчанин
 
Аватар для bitSoft
 
Регистрация: 13.03.2010
Сообщений: 198
По умолчанию

Код:
IdHTTP1:=TIdHTTP.Create(self);
Код:
With TProgrammersForum.Create do  AddNewTopic('Title','Content...');
bitSoft вне форума Ответить с цитированием
Старый 09.06.2010, 20:50   #3
Coder86
Новичок
Джуниор
 
Регистрация: 09.06.2010
Сообщений: 6
Сообщение

Цитата:
Сообщение от bitSoft Посмотреть сообщение
Код:
IdHTTP1:=TIdHTTP.Create(self);
Не помогло.

Последний раз редактировалось Coder86; 09.06.2010 в 20:57.
Coder86 вне форума Ответить с цитированием
Старый 09.06.2010, 20:57   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

какая ошибка там?
далее может лучше так?
Код:
procedure TNewThread.Execute;
var txt:tstringlist;
     http:TidHTTP;
begin
HTTP:=TIdHTTP.Create;
txt:=tstringlist.Create;
txt.add('u=12345');
HTTP.POST('http://yandex.ru?',txt);
http.free;//память освобождаем.
end;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.06.2010, 21:22   #5
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

Код:
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;
    IdHTTP1: TIdHTTP;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
TNewThread=class(TThread)
IdHTTP1:TIdHTTP;

private
protected
procedure Execute; override;
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TNewThread.Execute;
var txt:tstringlist;
begin
IdHTTP1:=TIdHTTP.Create(Form1);
txt:=tstringlist.Create;
txt.add('u=12345');
IdHTTP1.POST('http://yandex.ru?',txt);
end;

procedure TForm1.Button1Click(Sender: TObject);
var j:integer;
NewThread: TNewThread;
begin
for j:=0 to strtoint(Form1.edit1.text) do begin
NewThread:=TNewThread.Create(true);
NewThread.FreeOnTerminate:=true;
NewThread.Priority:=tpTimeCritical;
NewThread.Resume;
end;

Form1.label1.Caption:='OK!';

end;

end.
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
Volt вне форума Ответить с цитированием
Старый 09.06.2010, 21:30   #6
Coder86
Новичок
Джуниор
 
Регистрация: 09.06.2010
Сообщений: 6
По умолчанию

Ошибка "Not enough actual parameters".
Тоже самое.
Компоненты кажись все, чтоб не флудить я исходник скинул сюда, посмотрите, что может не так...

http://depositfiles.com/files/ewto1up57
Coder86 вне форума Ответить с цитированием
Старый 09.06.2010, 21:34   #7
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

а что вводите в едиты?
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
Volt вне форума Ответить с цитированием
Старый 09.06.2010, 21:54   #8
Coder86
Новичок
Джуниор
 
Регистрация: 09.06.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Volt Посмотреть сообщение
а что вводите в едиты?
С вашим кодом вот что за ошибка "Project Project1.exe raised exeception class EConvertError with message "'is not a valid integer value'. Process stopped. Use Step or Run to continue."
И Delphi виснет, выдаются windows коды ошибок, у меня тоже так было. Толи система глючит, толи Delphi.. весь день мучаюсь.
В едиты ввожу цыфры. Даже не знаю что такое.

Компелировал, запустил, ввел, нажал Button и сразу OKey, сниффер не показал что был запрос по адресу.

Последний раз редактировалось Coder86; 09.06.2010 в 22:02.
Coder86 вне форума Ответить с цитированием
Старый 09.06.2010, 22:13   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

итог таков.
Код:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Edit1: TEdit;

procedure Button1Click(Sender: TObject);
private
public
end;

type
TNewThread=class(TThread)

private
protected
procedure Execute; override;
end;

var
Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var j:integer;
NewThread: TNewThread;
begin
for j:=0 to strtoint(edit1.text) do begin
NewThread:=TNewThread.Create(true);
NewThread.FreeOnTerminate:=true;
NewThread.Priority:=tpTimeCritical;
NewThread.Resume;
end;

label1.Caption:='OK!';
end;

procedure TNewThread.Execute;
var txt:tstringlist;
     http:TidHTTP;
begin
HTTP:=TIdHTTP.Create;
txt:=tstringlist.Create;
txt.add('u=12345');
HTTP.POST('http://yandex.ru?',txt);
http.free;//память освобождаем.
txt.free;
end;

end.
Volt, один обьект может использоваться кучей потоков, хорошего тут мало.(я про ваш код)

в эдит нужно ввести число.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 09.06.2010 в 22:41.
Пепел Феникса вне форума Ответить с цитированием
Старый 09.06.2010, 22:37   #10
Coder86
Новичок
Джуниор
 
Регистрация: 09.06.2010
Сообщений: 6
По умолчанию

Пепел Феникса
С чего начили к такой ошибке и вернулись. Никто и не смог, найти недостаток. У кого хоть без ошибок, компелируется, выполняется?
Дайте исходник если нормально...и *.exe

Последний раз редактировалось Coder86; 09.06.2010 в 22:49.
Coder86 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
потоки Владимир1988 Помощь студентам 0 08.02.2010 23:12
Потоки в С++ BioS Общие вопросы C/C++ 2 09.01.2010 21:34
Потоки AidarBik Win Api 2 04.08.2008 10:00