ICQ - форум. Всё про ICQ.  

Вернуться   ICQ - форум. Всё про ICQ. > Мастерская > Программирование

Программирование C / C++ / Visual C++ / Delphi / Visual Basic / ASM / Windows / Pascal

 
 
Опции темы Оценить тему
Старый 23.02.2012, 11:41   #1
Участник
 
Аватар для vlad36
 
Регистрация: 24.01.2012
Сообщений: 9

ICQ: 744441

Репутация: 10
Jabber
Нефкуриваю [Delphi] Работа со списками

Здравствуйте форумчане!
Гуглил гуглил, но ничего не нагуглил.
Проблема заключается в том, что я не умею работать со списками.
Вот написал программу для разделения логинов от паролей:
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=true;
Button2.Enabled:=false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
inc(i);
if i=s.Count-1 then
begin
Timer1.Enabled:=false;
Button2.Enabled:=true;
end;

uin:=strtoint(copy(s.Strings[i],0,pos(Edit1.Text,s.Strings[i])-1));
Memo1.Lines.Add(inttostr(uin));
Label4.Caption:=IntToStr(StrToInt(Label4.Caption)+1);
ProgressBar1.Position:=ProgressBar1.Position+1;
end;
Все работает замечательно, но таймер тормозит работу программы.
Пробовал без таймера:
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
i:=0;
while i < s.Count do
Button2.Enabled:=false;
uin:=strtoint(copy(s.Strings[i],0,pos(Edit1.Text,s.Strings[i])-1));
Memo1.Lines.Add(inttostr(uin));
Label4.Caption:=IntToStr(StrToInt(Label4.Caption)+1);
ProgressBar1.Position:=ProgressBar1.Position+1;
if i = s.Count-1 then
Button2.Enabled:=true;
end;
Но так программа тупо зависает.
Подскажите новичку как работать со списками без таймера.
__________________
icq 744441
vlad36 вне форума  
Старый 24.02.2012, 16:27   #2
Участник
 
Аватар для vlad36
 
Регистрация: 24.01.2012
Сообщений: 9

ICQ: 744441

Репутация: 10
Jabber
По умолчанию

Что никто не умеет?((((
__________________
icq 744441
vlad36 вне форума  
Старый 24.02.2012, 17:12   #3
Участник
 
Регистрация: 21.11.2009
Сообщений: 137

ICQ: 484848484

Репутация: 275
По умолчанию

ну зависает например тут
Цитата:
while i < s.Count do
Button2.Enabled:=false;
а вообще что за списки, зачем таймер, что требуется то? из первого поста ничего не ясно.
k0tt0d вне форума  
Старый 24.02.2012, 17:28   #4
Участник
 
Аватар для vlad36
 
Регистрация: 24.01.2012
Сообщений: 9

ICQ: 744441

Репутация: 10
Jabber
По умолчанию

Цитата:
Сообщение от k0tt0d Посмотреть сообщение
ну зависает например тут


а вообще что за списки, зачем таймер, что требуется то? из первого поста ничего не ясно.
Есть список логинов и паролей (uin;pass), нужно чтобы программа отделяла все что до ";" из каждой строки по очереди.

Так перебирает по очереди каждую строку
Код:
procedure TForm1.Button2Click(Sender: TObject); 
begin Timer1.Enabled:=true; 
Button2.Enabled:=false; end;
 
 procedure TForm1.Timer1Timer(Sender: TObject);
 begin 
inc(i);
 if i=s.Count-1 then
 begin 
Timer1.Enabled:=false; 
Button2.Enabled:=true; 
end;  
uin:=strtoint(copy(s.Strings[i],0,pos(Edit1.Text,s.Strings[i])-1)); 
Memo1.Lines.Add(inttostr(uin)); 
Label4.Caption:=IntToStr(StrToInt(Label4.Caption)+1); 
ProgressBar1.Position:=ProgressBar1.Position+1;
 end;
а так нет:
Код:
procedure TForm1.Button2Click(Sender: TObject); 
begin
 i:=0; 
while i < s.Count do
 Button2.Enabled:=false; 
uin:=strtoint(copy(s.Strings[i],0,pos(Edit1.Text,s.Strings[i])-1)); 
Memo1.Lines.Add(inttostr(uin)); 
Label4.Caption:=IntToStr(StrToInt(Label4.Caption)+1); 
ProgressBar1.Position:=ProgressBar1.Position+1; 
if i = s.Count-1 then 
Button2.Enabled:=true; 
end;
Что не так я сделал во втором коде?
__________________
icq 744441

Последний раз редактировалось vlad36; 24.02.2012 в 17:31.
vlad36 вне форума  
Старый 24.02.2012, 18:39   #5
Участник
 
Регистрация: 27.09.2006
Сообщений: 1,045

ICQ: 272768

Репутация: 2856
Отправить сообщение для .fry с помощью Skype™ Bimoid
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject); 
var
 i, uin: integer;
begin
 Button2.Enabled:=false;
 for i := 0 to s.Count - 1 do
 begin
  uin := StrToIntDef(copy(s.Strings[i], 0, pos(Edit1.Text, s.Strings[i]) - 1), 0); 
  Memo1.Lines.Add(IntToStr(uin)); 
  Label4.Caption := IntToStr(StrToInt(Label4.Caption) + 1); // мб: Label4.Caption := IntToStr(i); ?
  ProgressBar1.Position := ProgressBar1.Position + 1; 
  Application.ProcessMessages();
 end;
 Button2.Enabled := true;
end;
Называйте элементы управления человеческими именами, блять.
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR.

Последний раз редактировалось .fry; 24.02.2012 в 18:42.
.fry вне форума  
Плюсанул .fry :
Старый 24.02.2012, 18:43   #6
Участник
 
Регистрация: 21.11.2009
Сообщений: 137

ICQ: 484848484

Репутация: 275
По умолчанию

Цитата:
Есть список логинов и паролей (uin;pass), нужно чтобы программа отделяла все что до ";" из каждой строки по очереди.
вообщем кидаем на форму 1 кнопку, пишем обработчик клика
Цитата:
var list,res:TStringList;
buf:string;
i:integer;
begin
list:=TStringList.create;
res:=TStringList.create;
list.loadfromfile('source.txt' );//загружаем список уин-пароль из файла
for i:=0 to list.count-1 do//перебираем все строки
begin
buf:=list.strings[i];
res.add(copy(buf,1,pos(';',buf )-1);
end;
res.savetofile('result.txt');//сохраняем итоговый список
res.free;
list.free;
если надо с таймером, то не знаком с ним.
k0tt0d вне форума  
Старый 24.02.2012, 18:49   #7
Участник
 
Регистрация: 27.09.2006
Сообщений: 1,045

ICQ: 272768

Репутация: 2856
Отправить сообщение для .fry с помощью Skype™ Bimoid
По умолчанию

Все жгут, если нет точки с запятой в строке в файл попадёт пустая строка.
__________________
Хочешь знать как работает ICQ? Читай документацию по протоколу в OSCAR.
.fry вне форума  
Старый 25.02.2012, 10:47   #8
Участник
 
Аватар для vlad36
 
Регистрация: 24.01.2012
Сообщений: 9

ICQ: 744441

Репутация: 10
Jabber
По умолчанию

Спасибо всем за ответы))
__________________
icq 744441
vlad36 вне форума  
 

Опции темы
Оценка этой теме
Оценка этой теме:

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +3, время: 18:53.


Перевод: zCarot
Форум Асечников © Asechka.RU

Новости Сочи