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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2009, 17:46   #1
foxes
Пользователь
 
Регистрация: 14.11.2008
Сообщений: 94
По умолчанию помогите с TStringList

помогите мне, пожалуйста с кодом , мне нужно сделать так, чтобы выводила в Memo1 по строчке и останавливался на каждой по 30 секунд,
а у меня только последняя строчка выводит,что делать, если не трудно ответьте
Код:
procedure TForm1.Button1Click(Sender: TObject);
 var
   i: Integer;
begin
 ss:=TStringList.Create;
 ss.LoadFromFile('1.txt');
 if ss.Count>0 then
  for i:=0 to ss.Count-1 do
  begin
Memo1.Text:=ss[i];


end;
foxes вне форума Ответить с цитированием
Старый 20.06.2009, 18:09   #2
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Делай так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   i: Integer;
   ss : TStringList;
begin
 ss:=TStringList.Create;
 ss.LoadFromFile('1.txt');
 if ss.Count>0 then
  for i:=0 to ss.Count-1 do
  begin
   Memo1.Lines.Add(ss.Strings[i]);
   sleep(30000); //задержка в 30 сек
  end;
end;
end;
Если нужны объяснения - пишы.
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 20.06.2009, 18:10   #3
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Ах да забыл! В конце на забудь написать:

Код:
ss.free;
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 20.06.2009, 18:19   #4
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Так программа "умрёт" до тех пор, пока не выведет все строки.
Лучше использовать таймер.
_Dmitry вне форума Ответить с цитированием
Старый 20.06.2009, 18:28   #5
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Почти согласен. Но еще лутше сделать вот так:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   i: Integer;
   ss : TStringList;
   h: THandle;
begin
 ss:=TStringList.Create;
 ss.LoadFromFile('1.txt');
 h:=CreateEvent(nil,true,false,''); //создаем пустое событие
 if ss.Count>0 then
  for i:=0 to ss.Count-1 do
  begin
   Memo1.Lines.Add(ss.Strings[i]);
   WaitForSingleObject(h,30000); //задержка в 30 сек
  end;
  closeHandle(h); //уничтожаем его
end;
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 20.06.2009, 19:03   #6
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Хотя нет - WaitForSingleObject тоже зависает прогу, оно просто меньше грузит систему чем sleep - я использую ее в фоновых программах.
Вот так в самый раз - и с таймерами возится не надо Компилятором не проверял.
Код:
var
   i: Integer;
   ss : TStringList;
   PrevTickCount : integer;
begin
 ss:=TStringList.Create;
 ss.LoadFromFile('1.txt');
 if ss.Count>0 then
 PrevTickCount:=GetTickCount();
  for i:=0 to ss.Count-1 do
  begin
    if GetTickCount - PrevTickCount > 30000 then
    begin
     Memo1.Lines.Add(ss.Strings[i]);
     PrevTickCount:=GetTickCount;
    end;
  application.ProcessMessages;
  end;
end;
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Старый 20.06.2009, 19:09   #7
hoza_syl
Форумчанин
 
Аватар для hoza_syl
 
Регистрация: 23.05.2008
Сообщений: 219
По умолчанию

Блин. Снова заметил ошибку:
Используй цикл while, а не for. Cчетчик уменшай после добавления строки.
The Revolution is Now!
hoza_syl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TStringstream VS Tstringlist Lich Работа с сетью в Delphi 2 06.01.2009 10:54
Сортировка в tStringList Altera Общие вопросы Delphi 16 05.03.2008 09:48
TStringList nimf Общие вопросы Delphi 5 15.11.2007 14:44
Класс TStringList Pblog Обсуждение статей 0 27.05.2007 02:13
Помогите пожалуйста найти и заменить слово в TStringList Aleno4ka Помощь студентам 3 24.02.2007 14:45