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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2010, 20:13   #1
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию Пишу программу для рассылки

Имеются подписчики - пишу программу для рассылки:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sButton, sLabel, sMemo, sEdit, sSpinEdit, sSkinManager,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP,
  acAlphaHints, acPNG, ExtCtrls, sAlphaListBox, sDialogs;

type
  TForm1 = class(TForm)
    sEdit2: TsEdit;
    sMemo1: TsMemo;
    sLabel2: TsLabel;
    sLabel3: TsLabel;
    sLabel4: TsLabel;
    sButton1: TsButton;
    sSkinManager1: TsSkinManager;
    IdHTTP1: TIdHTTP;
    Image1: TImage;
    sOpenDialog1: TsOpenDialog;
    sLabel1: TsLabel;
    sListBox1: TsListBox;
    sButton2: TsButton;
    procedure sButton1Click(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure captions(i:integer;count:integer);
    procedure pause(p:byte);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a:TStringList;
  b:array[1..100] of string;

implementation

{$R *.dfm}

procedure TForm1.captions(i:integer;count:integer);
begin
 sButton1.Caption:='...:::'+inttostr(i+1)+'/'+inttostr(count)+':::...';
end;

procedure TForm1.pause(p:byte);
var pa1:ttime;
begin
  pa1:=encodetime(0,0,p,0)+time;
  repeat
    application.processmessages;
    sleep(10);
  until time>=pa1;
end;

procedure TForm1.sButton1Click(Sender: TObject);
var i,count:integer;
begin
 for i:=0 to sListBox1.Count-1 do b[i+1]:='to='+sListBox1.Items.Strings[i];
 count:=sListBox1.Count;
      a.Add('1=1');
      a.Add('subject='+sEdit2.Text);
      a.Add('message='+sMemo1.Text);
      a.Add('from=dota200@yandex.ru');
      a.Add('col=1');
    for i:=0 to sListBox1.Items.Count-1 do
      {a.Add('to='+sListBox1.Items.Strings[i]);}
     begin
      a.Strings[0]:=b[i+1];
      idhttp1.Post('http://webmoney1.jino-net.ru/mail.php',a);
      captions(i,count);
      pause(1);
     end;
 a.Free;
end;

procedure TForm1.Image1Click(Sender: TObject);
begin
 showmessage('Программу написал kakawkin'+#13#10+'icq: 596694185'+#13#10+'e-mail: не скажу =)');
end;

procedure TForm1.sButton2Click(Sender: TObject);
begin
 if sOpenDialog1.Execute then sListBox1.Items.LoadFromFile(sOpenDialog1.FileName);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 a:=TStringList.Create;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 for i:=0 to sListBox1.Items.Count-1 do begin
 showmessage(inttostr(sListBox1.Items.Count));
 {showmessage(sListBox1.Items[i]);}
 end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Try
 a.Free;
 idhttp1.Destroy;
 Finally
 end;
end;

end.
ток непашет нифига - помогите плз и скажите что тут не так
kakawkin вне форума Ответить с цитированием
Старый 17.07.2010, 20:16   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

А что именно "нифига не пашет" ? Какую-то ошибку выдает?
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 18.07.2010, 00:02   #3
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

да то при отправке, то при закрытии приложения.
при отправке вообще чуть ли не сдыхает нахрен программа.
раньше заполнение a.Add(); было в цикле - щас вынес и стало дольше. Когда ыло в цикле - пытался в конец бахнуть a.Free, так вообще ошибки поперли
kakawkin вне форума Ответить с цитированием
Старый 18.07.2010, 03:16   #4
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

а вот так будет правильно ??? просто пока возможности проверить нету

Цитата:
procedure TForm1.sButton1Click(Sender: TObject);
var i,count:integer;
begin
count:=sListBox1.Count;
for i:=0 to sListBox1.Items.Count-1 do
begin
a.Add('to'=+sListBox1.Items[i]);
a.Add('subject='+sEdit2.Text);
a.Add('message='+sMemo1.Text);
a.Add('from=dota200@yandex.ru');
a.Add('col=1');
idhttp1.Post('http://webmoney1.jino-net.ru/mail.php',a);
captions(i,count);
pause(1);
Try
a.Free;
Finally
end;
end;
a.Free;
end;
kakawkin вне форума Ответить с цитированием
Старый 18.07.2010, 15:25   #5
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Маленький примерчик со свойством AddStrings. Вам оно пригодится.

Код:
  a:=TSTringList.Create;
  a.Add('1111');
  a.AddStrings(ListBox1.Items);
  Memo1.Lines.AddStrings(a);
  a.Free;
dr.Chas вне форума Ответить с цитированием
Старый 18.07.2010, 18:17   #6
kakawkin
Форумчанин
 
Регистрация: 21.09.2009
Сообщений: 431
По умолчанию

Цитата:
Сообщение от dr.Chas Посмотреть сообщение
Маленький примерчик со свойством AddStrings. Вам оно пригодится.

Код:
  a:=TSTringList.Create;
  a.Add('1111');
  a.AddStrings(ListBox1.Items);
  Memo1.Lines.AddStrings(a);
  a.Free;
немонимаю как оно пригодиться. я же говарю что при коде
Код:
procedure TForm1.sButton1Click(Sender: TObject);
var i,count:integer;
begin
count:=sListBox1.Count;
for i:=0 to sListBox1.Items.Count-1 do
begin
a.Add('to'=+sListBox1.Items[i]);
a.Add('subject='+sEdit2.Text);
a.Add('message='+sMemo1.Text);
a.Add('from=dota200@yandex.ru');
a.Add('col=1');
idhttp1.Post('http://webmoney1.jino-net.ru/mail.php',a);
captions(i,count);
pause(1);
Try
a.Free;
Finally
end;
end;
end;
непашет т.к. нету очищения переменной a - а если в конец цикла добавить а.Free; то виснит цикл после первой отправки
kakawkin вне форума Ответить с цитированием
Старый 18.07.2010, 18:56   #7
zver777
Пользователь
 
Регистрация: 31.07.2009
Сообщений: 89
По умолчанию

А где у вас?
Код:
a:=tstringlist.create;
zver777 вне форума Ответить с цитированием
Старый 18.07.2010, 20:14   #8
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Ну так free это не очищение, а уничтожение созданного объекта, вы уничтожаете объект, потом обращаетесь к нему не создав его. Если вы хотите очистить a то это можно сделав так a.clear;
dr.Chas вне форума Ответить с цитированием
Старый 19.07.2010, 10:01   #9
timyr1997
Пользователь
 
Регистрация: 10.06.2010
Сообщений: 37
По умолчанию

a.Add('to'=+sListBox1.Items[i]);

Жазве должно быть не

a.Add('to='+sListBox1.Items[i]);

???
timyr1997 вне форума Ответить с цитированием
Ответ


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