![]() |
|
|
#16
|
|||
|
|||
|
Отредактировал, а насчёт разделителя: разные могут быть разделители в загружаемом списке
|
|
#17
|
||||
|
||||
|
Но структура полей не меняется: логин + разд. + пароль?
|
|
#18
|
|||
|
|||
|
Да-да, только разделитель или : или ;
|
|
#19
|
||||
|
||||
|
Вот набросок, может что и подойдёт
|
|
#20
|
|||
|
|||
|
Что-то я не въехал честно говоря в ваш код, пытался вставить свою интернетную часть, но что-то не заработало у меня. В общем вот я мой проект вам скину, мне кажется вы не совсем так меня понимаете или я вас))) Запаролил на всякий случай
|
|
#21
|
|||
|
|||
|
Привет, решал давеча похожую задачу с использованием stringlist и CommaText.
Для корректной работы пришлось текст в кавычки заключить, а разделитель ",". Может поможет ![]() Код:
procedure TForm1.Button4Click(Sender: TObject);
var
ts: tstringlist;
S: string;
Tf: Textfile;
begin
Ts := Tstringlist.create;
Assignfile(tf, 'путь_к_файлу');
Reset(tf);
ComboBox2.Items.Clear;
ComboBox3.Items.Clear;
while not eof(tf) do
begin
Readln(tf,S);
Ts.CommaText := S;
ComboBox2.Items.Add(Ts[0]);
ComboBox3.Items.Add(Ts[1]);
end;
closefile(tf);
ts.free;
end;UPD Чтобы прокатило с разделителем ":" вместо Ts.CommaText := S; в коде выше вставить Код:
Ts.Delimiter := ':';
Ts.DelimitedText := S;Последний раз редактировалось cerbernar, 17.04.2015 в 12:37. |
|
#22
|
|||
|
|||
|
Ну в общем, создал поток и сделал синхронизацию, вроде всё работает, но осталось ещё несколько проблем:
1)прогрессбар не доходит до конца; 2)как остановить выполнение программы по нажатию кнопки Стоп? Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, sSkinManager, StdCtrls, sButton, ComCtrls, acProgressBar, sMemo,
sLabel, sEdit, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdHTTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL,
IdCookieManager, IdIntercept, IdCompressionIntercept, sDialogs;
type
TForm2 = class(TForm)
sMemo1: TsMemo;
sButton1: TsButton;
IdHTTP1: TIdHTTP;
IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
sEdit3: TsEdit;
sLabel3: TsLabel;
sLabel4: TsLabel;
sLabel5: TsLabel;
sMemo2: TsMemo;
sButton2: TsButton;
sOpenDialog1: TsOpenDialog;
sLabel6: TsLabel;
sLabel7: TsLabel;
sLabel8: TsLabel;
sLabel9: TsLabel;
sSkinManager1: TsSkinManager;
sProgressBar1: TsProgressBar;
sButton3: TsButton;
procedure sButton1Click(Sender: TObject);
procedure sButton2Click(Sender: TObject);
{ Private declarations }
public
{ Public declarations }
end;
type
TMyThread = class(TThread)
private
protected
procedure Good;
procedure Bad;
procedure ProgressBar;
procedure MemoClear;
procedure Execute; override;
end;
var
Form2: TForm2;
Accounts: TStringList;
Login, Password, del: string;
ProgressPos: integer;
implementation
{$R *.dfm}
procedure TForm2.sButton2Click(Sender: TObject);
begin
Accounts:=TStringList.Create;
if sOpenDialog1.Execute then
begin
Accounts.Clear;
sMemo1.Lines.Clear;
sMemo2.Lines.Clear;
Accounts.LoadFromFile(sOpenDialog1.FileName);
sLabel9.Caption:=inttostr(Accounts.Count);
end;
if pos(';', Accounts.Strings[0])<>0 then
begin
del:=';';
end else
begin
del:=':';
end;
end;
procedure TForm2.sButton1Click(Sender: TObject);
begin
TMyThread.Create(False);
end;
procedure TMyThread.MemoClear;
begin
Form2.sMemo1.Lines.Clear;
Form2.sMemo2.Lines.Clear;
end;
procedure TMyThread.ProgressBar;
begin
Form2.sProgressBar1.Position:=ProgressPos;
Form2.sProgressBar1.Max:=Accounts.Count;
end;
procedure TMyThread.Bad;
begin
Form2.sMemo2.Lines.Add(Login+del+Password);
Form2.sLabel6.Caption:=inttostr(Form2.sMemo2.Lines.Count);
end;
procedure TMyThread.Good;
begin
Form2.sMemo1.Lines.Add(Login+del+Password);
Form2.sLabel7.Caption:=inttostr(Form2.sMemo1.Lines.Count);
end;
procedure TMyThread.Execute;
var
HTML: string;
Acc: integer;
begin;
Synchronize(MemoClear);
for Acc := 0 to Accounts.Count-1 do
begin
ProgressPos:=Acc;
Synchronize(ProgressBar);
Login:=copy(Accounts[Acc], 1, pos(del, Accounts[Acc])-1);
Password:=copy(Accounts[Acc], pos(del, Accounts[Acc])+1, MaxInt);
HTML:=Form2.IdHTTP1.Get('http://xxxxxx&Login='+Login+'&Password='+Password);
if pos ('class="button__valign"', HTML)<>0 then
begin
HTML:=Form2.IdHTTP1.Get('https://xxxxxx'+Form2.sEdit3.Text+'&q%5Ffolder=all');
if pos ('class="gosearch-message"', HTML)<>0 then
begin
Synchronize(Bad);
end
else
begin
Synchronize(Good);
end;
end
else
begin
Synchronize(Bad);
end;
end;
end;
end.Последний раз редактировалось AlexBerg001, 21.04.2015 в 15:49. |
|
#23
|
|||
|
|||
|
С прогрессбаром разобрался и добавил сохранение результатов в файл. Вопрос с остановкой выполнения программы остаётся открытым
Добавил переменную T1: TThread и прописал вот так Код:
procedure TForm2.sButton3Click(Sender: TObject); begin T1.Terminate; end; procedure TForm2.sButton1Click(Sender: TObject); begin T1:=TMyThread.Create(False); end; Последний раз редактировалось AlexBerg001, 21.04.2015 в 19:43. |
|
#24
|
|||
|
|||
|
Закройте тему, вопрос уже совсем не соответствует названию
|