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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 13:49   #1
Ученик.6Б
Пользователь
 
Регистрация: 10.06.2010
Сообщений: 18
Вопрос Вопрос с циклом

Такой код:

Цитата:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
IdHTTP1: TIdHTTP;
NEdit: TEdit;
Button1: TButton;
ResultLabel: TLabel;
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
var S:string;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var Data:TStringList;
begin
Data:=TStringList.Create;
Data.Add('artrib='+NEdit.Text);
S:=IdHTTP1.Post('http://microsoft.com/index.php?id=1'+NEdit.Text, Data);
if Pos('Atrue', S)<>0 then
ResultLabel.Caption:='Отправлено'
else
ResultLabel.Caption:='Ошибка';
end;

end.
Хочу второй едит, чтоб ввести число (например - 5) и выполнилось 5 раз POST запрос (http://microsoft.com/index.php...), но никак не получается. Помогите!
Ученик.6Б вне форума Ответить с цитированием
Старый 10.06.2010, 14:01   #2
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Код:
var
  i: Integer;

...

for i := 1 to StrToInt (Edit2.Text) do begin
  S:=IdHTTP1.Post('http://microsoft.com/index.php?id=1'+NEdit.Text, Data);
end;
Sibedir вне форума Ответить с цитированием
Старый 10.06.2010, 14:31   #3
Ученик.6Б
Пользователь
 
Регистрация: 10.06.2010
Сообщений: 18
По умолчанию

Sibedir - СПАСИБО!!! Просто не так делал, код больше сам, выложил кусок, с твоим советом понял, чуть тупил (запутался). Новичек еще, но раздел и есть для таких, так что простительно.

Вот еще один вопрос, при каждом запросе чтоб выводилась надпись (1 - запрос: цифра 1, 2 - запрос: цифра 2 и т. д.) в самом конце "Отправлено".
Ученик.6Б вне форума Ответить с цитированием
Старый 10.06.2010, 14:43   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
при каждом запросе чтоб выводилась надпись
Выводилась куда?
--------------------------
Так что-ли?
Код:
for i := 1 to StrToInt (Edit2.Text) do begin
  S:=IdHTTP1.Post('http://microsoft.com/index.php?id=1'+NEdit.Text, Data);
  ResultLabel.Caption:=IntToStr(i);
end;
Или так?
Код:
for i := 1 to StrToInt (Edit2.Text) do begin
  S:=IdHTTP1.Post('http://microsoft.com/index.php?id=1'+NEdit.Text, Data);
  if Pos('Atrue', S) = 0 then
    ResultLabel.Caption:='Запрос - ' + IntToStr(i)
  else
    Break;
end;
if Pos('Atrue', S)=0 then
  ResultLabel.Caption:='Ошибка'
else
  ResultLabel.Caption:='Отправлено';

Последний раз редактировалось Sibedir; 10.06.2010 в 14:50.
Sibedir вне форума Ответить с цитированием
Старый 10.06.2010, 14:51   #5
Ученик.6Б
Пользователь
 
Регистрация: 10.06.2010
Сообщений: 18
По умолчанию

Не выходит так, в ResultLabel только после запросов пишется как и было "Отправлено", числовых перечислений нет на каждый запрос. Только это осталось.
Ученик.6Б вне форума Ответить с цитированием
Старый 10.06.2010, 14:55   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Дык все правильно. Запрос проходит с первого раза. Если нужно жестко N раз (хотя не понятно зачем), то используй первый вариант. Но и там есть вероятность, что ты просто не успеешь увидить надписи с цифрами. Цикл отработает очень быстро и программа снова напишет "Отправлено".
--------------------------------------
Вместо TLabel можно использовать TMemo. Там будет видна вся последовательность.
Код:
Memo1.Lines.Clear;
for i := 1 to StrToInt (Edit2.Text) do begin
  S:=IdHTTP1.Post('http://microsoft.com/index.php?id=1'+NEdit.Text, Data);
  if Pos('Atrue', S) = 0 then
    Memo1.Lines.Add ('Запрос - ' + IntToStr(i) + ' (' + TimeToStr(Now) + ')')
  else
    Break;
end;
if Pos('Atrue', S)=0 then Memo1.Lines.Add ('Ошибка')
else Memo1.Lines.Add ('Отправлено (' + TimeToStr(Now) + ')');

Последний раз редактировалось Sibedir; 10.06.2010 в 15:00.
Sibedir вне форума Ответить с цитированием
Старый 10.06.2010, 16:14   #7
Ученик.6Б
Пользователь
 
Регистрация: 10.06.2010
Сообщений: 18
По умолчанию

Использовал TMemo как посоветовали, но ничего не выводится, никакой надписи, ни "Отправлено" даже. В чем дело?
Ученик.6Б вне форума Ответить с цитированием
Старый 10.06.2010, 16:21   #8
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Давай весь исходник.
Sibedir вне форума Ответить с цитированием
Старый 10.06.2010, 16:42   #9
Ученик.6Б
Пользователь
 
Регистрация: 10.06.2010
Сообщений: 18
Сообщение

Цитата:
Сообщение от Sibedir Посмотреть сообщение
Давай весь исходник.
Здесь я тестовый исходник дал.
Насчет кнопочки вложения учту, не знал.

Последний раз редактировалось Ученик.6Б; 10.06.2010 в 17:00.
Ученик.6Б вне форума Ответить с цитированием
Старый 10.06.2010, 16:56   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Замечание: в расширеном режиме ответа есть кнопочка вложения. Для 3,5кВ в будущем лучше пользоваться ей.

Вопрос: Что ввести в качестве запроса?

Последний раз редактировалось Sibedir; 10.06.2010 в 16:59.
Sibedir вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не получается с циклом armagedon_atyrau Microsoft Office Excel 2 03.06.2010 08:50
помогите с циклом pobedin БД в Delphi 2 28.08.2009 14:56
Задача с циклом for в c++ Many man Помощь студентам 5 14.12.2008 12:01
помогите с циклом Lonix PHP 1 19.09.2008 17:51
Проблема с циклом.. POPOV Помощь студентам 3 29.04.2008 18:36