![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мастера, помогите!!!! Горю. Ыспользование таймера. [D6, Win95/98, Win2k]
goliaph © (2002-07-04 12:37:00)Мастера помогите пожалуста.
есть файл типа Textfile в котором 20 слов.
Как сделать чтобы ети слова равномерно через 2 сикунды выводило
на екран.
goliaph (2002-07-04 15:01:00) [1]большое спасибо, я просто не там описал
Alx2 (2002-07-04 14:55:00) [2]Смотри как у меня объявлено:
TForm1 = Class(TForm)
.....................
Private
{ Private declarations }
Public
{ Public declarations }
TF: System.Text;
End;
goliaph (2002-07-04 14:50:00) [3]спасибо, но тут какой то еще прикол.
Компилятор нне пропускает TF : System.Text
Ошибка типа "Expeted";" but"." found"
Alx2 (2002-07-04 14:23:00) [4]>Kaban © (04.07.02 14:17)
Сорри за интерференцию. Пока писал прошло некоторое время :)
Alx2 (2002-07-04 14:21:00) [5]Опиши сначала переменную TF : System.Text внутри класса формы.
Timer1.Enabled сразу установи в False
Timer1.Interval сразу установи равным 2000
Timer1.OnTimer описана ниже.
Procedure TForm1.Button1Click(Sender: TObject); //По этой кнопке начинаем работать.
Begin
AssignFile(TF, <твой файл>);
Reset(TF); // Открываем файл
Timer1.ENABLED := True; // Запускаем процесс
End;
Procedure TForm1.Timer1Timer(Sender: TObject);
// Обработка события Timer1.OnTimer
Const
ValidSet = ["a".."z", "A".."Z", "а".."я", "А".."Я", "0".."9"];
Var S: String;
Ch: Char;
Begin // Внутри процесса делаем следущее:
S := "";
While (Not EOF(TF)) And (Not (Ch In ValidSet)) Do Read (TF, Ch);
While (Not EOF(TF)) And ((Ch In ValidSet)) Do
Begin
S := S + Ch;
Read (TF, Ch);
End;
staticText.caption := S; // Получили очередное слово.
If EOF(TF) Then // Если все прочли, то прекращаем изврат.
Begin
closefile(TF);
Timer1.ENABLED := False;
End;
End;
Kaban (2002-07-04 14:17:00) [6]Делайте так:
объявите глобальную переменную:
var SList:TStringList;
N :Integer;
в MainForm.OnCreate:
SList:=TStringList.Create;
SList.LoadFromFile("Имя файла");
N:=0;
в MainForm.OnDestroy:
SList.Free;
в Timer
if N<SList.Count then
begin
Memo1.Lines.Append(SList.Strings[N]
N:=N+1;
end
else
begin
N:=0;
Timer1.enabled:=false;
end;
goliaph (2002-07-04 14:08:00) [7]спасибо. Но я так и не понял как ето сделать.
я пока еще не силен в делф.
Поетому если не влом какой нибуть примерчик или
еще раз но подробно обяснить
Kaban (2002-07-04 14:04:00) [8]2Skier
вы издеваетесь?
я полагаю, что сейчас происходит следующее:
Нажимается кнопочка, запускается таймер в котором каждый раз открывается файл и считывается первоеслово.
Надо
Нажимается кнопочка, открывается файл, запускается таймер в котором каждый раз считывается следующееслово, когда слова заканчиваются, файл закрывается, таймер отключается.
Skier (2002-07-04 14:03:00) [9]>goliaph
Всё понял. Тогда действительно достаточно 1 таймера.
>Kaban
Был не прав. Каюсь :)
goliaph (2002-07-04 14:01:00) [10]между каждым появлением тоже 2 ск
Skier (2002-07-04 13:59:00) [11]>goliaph
Т.е. задержки начала чтения из файла нет ???
Kaban (2002-07-04 13:58:00) [12]что насчет двух секунд?
Skier (2002-07-04 13:56:00) [13]>Kaban
А как же насчёт 2 сек. между словами ?
goliaph (2002-07-04 13:56:00) [14]не спорте.
Вы меня наверняка неверно поняли.
Вобщем дело предстоит так.
ето тестовая програма на тему психологии.
Есть 20 слов и 20 фраз( я их внес в текстовый файл).
нужно ети слова выводить на екран из задержкой 2 ск.(слова отображаются 2ск. равномерно)
я пробывал их считывать с файла в цыкле и выводить на екран, присвоив staticText.caption значение переменной из файла.а между каждым считыванием задержка sleep(). Но почему то выводит з разной задержкой.
Anatoly Podgoretsky (2002-07-04 13:54:00) [15]Абсолютно верно замечено, что значит программст (это похвала)
Kaban (2002-07-04 13:53:00) [16]ну ты дал
>как сделать чтоб при каждем следуещем срабатывания таймера
>выводилось не первое слово файла
Да он просто внутри таймера, открывает файл для чтения и у него каждый раз читается первое слово. Второй таймер сдесь не причем
Skier (2002-07-04 13:51:00) [17]>Kaban
Давай без эмоций обсудим...
1) goliaph-у нужно определить момент начала вывода текста
Он об этом в вопросе не пишет, но потом сообщает
"...при следуещем срабатывания таймера". Значит тут тоже
нужен таймер.
2) установить задержку между словами (2 сек.)
Вывод : 1) + 2) = two timers
Kaban (2002-07-04 13:45:00) [18]серьезно, с чего бы это?
Skier (2002-07-04 13:44:00) [19]>Kaban
> Открываешь файл вне таймера
> Внутри таймера просто считываешь слова
Вот это точно - полный бред !
Skier (2002-07-04 13:37:00) [20]>Kaban