Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
ВнизМастера, помогите!!!! Горю. Ыспользование таймера. Найти похожие ветки
← →
goliaph (2002-07-04 12:37) [0]Мастера помогите пожалуста.
есть файл типа Textfile в котором 20 слов.
Как сделать чтобы ети слова равномерно через 2 сикунды выводило
на екран.
← →
shane54 (2002-07-04 13:03) [1]Положи на форму TTimer, параметр Interval поставь 2000 милисекунд (2 секунды), в событие onTimer пропиши все что тебе нужно (вывод слов).
← →
goliaph (2002-07-04 13:28) [2]спасибо.
но тут еще одна проблема.
слова находятся в файле.
как сделать чтоб при каждем следуещем срабатывания таймера
выводилось не первое слово файла, а все причем из задержкой 2 ск
(я пробывал присваивать statikText.caption слово из файла
← →
goliaph (2002-07-04 13:29) [3]спасибо.
но тут еще одна проблема.
слова находятся в файле.
как сделать чтоб при каждем следуещем срабатывания таймера
выводилось не первое слово файла, а все причем из задержкой 2 ск
(я пробывал присваивать statikText.caption слово из файла )
← →
Skier (2002-07-04 13:32) [4]>goliaph
Наверное нужно 2 таймера.
Один определяет когда нужно начать выводить слова,
другой осчитывает 2 секунды для каждого слова.
← →
Kaban (2002-07-04 13:35) [5]2 Skier
>Наверное нужно 2 таймера.
>Один определяет когда нужно начать выводить слова,
>другой осчитывает 2 секунды для каждого слова.
Что за бред?
Открываешь файл вне таймера
Внутри таймера просто считываешь слова
← →
Skier (2002-07-04 13:37) [6]>Kaban
← →
Skier (2002-07-04 13:44) [7]>Kaban
> Открываешь файл вне таймера
> Внутри таймера просто считываешь слова
Вот это точно - полный бред !
← →
Kaban (2002-07-04 13:45) [8]серьезно, с чего бы это?
← →
Skier (2002-07-04 13:51) [9]>Kaban
Давай без эмоций обсудим...
1) goliaph-у нужно определить момент начала вывода текста
Он об этом в вопросе не пишет, но потом сообщает
"...при следуещем срабатывания таймера". Значит тут тоже
нужен таймер.
2) установить задержку между словами (2 сек.)
Вывод : 1) + 2) = two timers
← →
Kaban (2002-07-04 13:53) [10]ну ты дал
>как сделать чтоб при каждем следуещем срабатывания таймера
>выводилось не первое слово файла
Да он просто внутри таймера, открывает файл для чтения и у него каждый раз читается первое слово. Второй таймер сдесь не причем
← →
Anatoly Podgoretsky (2002-07-04 13:54) [11]Абсолютно верно замечено, что значит программст (это похвала)
← →
goliaph (2002-07-04 13:56) [12]не спорте.
Вы меня наверняка неверно поняли.
Вобщем дело предстоит так.
ето тестовая програма на тему психологии.
Есть 20 слов и 20 фраз( я их внес в текстовый файл).
нужно ети слова выводить на екран из задержкой 2 ск.(слова отображаются 2ск. равномерно)
я пробывал их считывать с файла в цыкле и выводить на екран, присвоив staticText.caption значение переменной из файла.а между каждым считыванием задержка sleep(). Но почему то выводит з разной задержкой.
← →
Skier (2002-07-04 13:56) [13]>Kaban
А как же насчёт 2 сек. между словами ?
← →
Kaban (2002-07-04 13:58) [14]что насчет двух секунд?
← →
Skier (2002-07-04 13:59) [15]>goliaph
Т.е. задержки начала чтения из файла нет ???
← →
goliaph (2002-07-04 14:01) [16]между каждым появлением тоже 2 ск
← →
Skier (2002-07-04 14:03) [17]>goliaph
Всё понял. Тогда действительно достаточно 1 таймера.
>Kaban
Был не прав. Каюсь :)
← →
Kaban (2002-07-04 14:04) [18]2Skier
вы издеваетесь?
я полагаю, что сейчас происходит следующее:
Нажимается кнопочка, запускается таймер в котором каждый раз открывается файл и считывается первое слово.
Надо
Нажимается кнопочка, открывается файл, запускается таймер в котором каждый раз считывается следующее слово, когда слова заканчиваются, файл закрывается, таймер отключается.
← →
goliaph (2002-07-04 14:08) [19]спасибо. Но я так и не понял как ето сделать.
я пока еще не силен в делф.
Поетому если не влом какой нибуть примерчик или
еще раз но подробно обяснить
← →
Kaban (2002-07-04 14:17) [20]Делайте так:
объявите глобальную переменную:
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;
← →
Alx2 (2002-07-04 14:21) [21]Опиши сначала переменную 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;
← →
Alx2 (2002-07-04 14:23) [22]>Kaban © (04.07.02 14:17)
Сорри за интерференцию. Пока писал прошло некоторое время :)
← →
goliaph (2002-07-04 14:50) [23]спасибо, но тут какой то еще прикол.
Компилятор нне пропускает TF : System.Text
Ошибка типа "Expeted";" but"." found"
← →
Alx2 (2002-07-04 14:55) [24]Смотри как у меня объявлено:
TForm1 = Class(TForm)
.....................
Private
{ Private declarations }
Public
{ Public declarations }
TF: System.Text;
End;
← →
goliaph (2002-07-04 15:01) [25]большое спасибо, я просто не там описал
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.07.15;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.01 c