Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 28.12.2009
Сообщений: 3

Вывод в Memo по Таймеру одной строкой

16.07.2010, 08:47. Показов 2441. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток.
Имеется прога по таймеру выполняет следующее: Если Contact замкнут (нет галочки), то поле Lamp загорается зеленым цветом. Если разомкнут (есть галочка), то поле Lamp загорается красным звучит сирена. Отключаем сирену Sound Off. Если Contact замкнут (нет галочки) чтобы его взвести жмем Lock.
При отключенной сирене кнопка Lock не активна. Есть поле с текущим временем и поле Memo где выводится информация: замкнут или же разомкнут контакт.Все пишится в файл Alarm_List.txt. Вопрос в следующем как сделать чтобы при замкнутом контате или разомкнутом в поле Memo и в файл Alarm_List выводилась одна строка. Т.е замкнулся контакт вышла строка ""16 Июль 2010 г. 00:21:51 замкнут"", далее разомкнулся контакт вышла строка ""16 Июль 2010 г. 00:21:55 разомкнут"". В моем же примере в поле Memo постоянно бегут строки о разомкнутом или замкнутом контакте. Исходник прилагаю разместить на c:\primer , а то не находит звук сирены. Вот текст исходника. Спасибо.
Можно отвечать на alex_n_shtepa@mail.ru

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{$R *.dfm}
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
  s: string;
  z: string;
  F: TextFile;
begin
 panel2.Caption := timetostr(now);
  if CheckBox2.Checked = true then panel1.Color := clred;
  S := FormatDateTime('dddddd hh:nn:ss' , Now) + '  ' +  'разомкнут';  // Текущее время и состояние
   z := FormatDateTime('dddddd hh:nn:ss' , Now) + '  ' +  'замкнут';  // Текущее время  и состояние
 
             if  panel1.Color = clred then memo1.Lines.Add(s);
 
            if  panel1.Color = clgreen then memo1.Lines.Add(z);
 
         // Запись строки в лог-файл
 AssignFile(F, 'Alarm_List.txt');
  if not FileExists('Alarm_List.txt') then Rewrite(F) else Append(F);
  try
   if panel1.Color = clred then Writeln(F, S);
   if panel1.Color = clgreen then  Writeln(F, z);
  finally
    CloseFile(F);
  form1.MediaPlayer1.Open;
 if panel1.Color = clred then mediaplayer1.Play;  //Звучит сирена
end;
 end;
 procedure TForm1.Button1Click(Sender: TObject);
begin
    Timer1.Enabled := true;
     if CheckBox2.Checked = false then Panel1.Color := clgreen;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
 if Form1.CheckBox1.Checked then Timer1.Enabled := false else  Timer1.Enabled := true;
 if Form1.CheckBox1.Checked then Form1.Button1.Enabled := false else Form1.Button1.Enabled := true;
 if  Panel1.Color = clgreen then  Form1.CheckBox1.Checked := false;
 if CheckBox1.Checked = true then mediaplayer1.Stop;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
    panel1.Color := clred; //тест
end;
end.
Вложения
Тип файла: rar primer.rar (186.0 Кб, 27 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2010, 08:47
Ответы с готовыми решениями:

Ввести массив в Memo одной строкой
Народ , понимаю , что вопрос тупейший , но почему у меня не получается ввести массив в Memo одной строкой . Вот мой код : procedure...

Вывод массива одной строкой
Доброго времени суток! Сразу к делу=) Есть таблица откуда получаю поле name <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0...

Вывод цветного текста в консоль одной строкой
Доброго времени суток, уважаемые форумчане ! Была поставлена одна интересная задача. Необходимо создать что-то похожее на обычный...

3
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
16.07.2010, 10:52
ессественно, у тебя ж таймер срабатывает каждую секунду (1000ms)!
0
0 / 0 / 0
Регистрация: 28.12.2009
Сообщений: 3
16.07.2010, 11:02  [ТС]
дело в том что Contact это датчик.И при его срабатывании нужно что бы сирена оставалась включенной и при появлении контакта не переходила опять в состояние замкнут(Lamp зеленый) пока не нажмем кнопку Lock. по таймеру идет опрос датчика. А в поле memo нужно однакратный вывод. Допустим разомкнут горит красный Lamp сирена воет запись в поле memo 16 Июль 2010 г. 11:18:02 разомкнут только один раз(если даже контакт замкнут всеравно гори красный и воет сирена пока не взведем кнопкой Lock)как только Lamp зеленый в поле memo должна отобразится одна строка 16 Июль 2010 г. 11:18:28 замкнут и так каждый раз, а в моем случае при замкнутом или разомкнутом контакте
строка в memo всегда обнавляется
0
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
16.07.2010, 13:48
Тогда вместо этого
Цитата Сообщение от alex_sh Посмотреть сообщение
Delphi
1
memo1.Lines.Add(s);
используйте
Delphi
1
Memo1.Text:=s;
ну и аналогично с z

Добавлено через 2 минуты
запись будет одна, но будет обновляться каждую секунду, а вот в лог файле все также будет идти, если же нужно именно на смену состояния реагировать, тогда нужно ввести доп переменную которая бы сохраняла прошлое состояние, и только если новове состояние отличается от старого то писать файл (ну и соответсвенно обновлять переменную-состояния)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2010, 13:48
Помогаю со студенческими работами здесь

Ввод/вычисление/вывод одной программной строкой
Здравствуйте) Есть вопрос, можно ли сделать по функционалу вот это: cin>>p; p*=p; cout<<p; только одной...

Разбор JSON и вывод таблицы с одной строкой + AJAX
вот код <html> <head> <meta charset="UTF-8"> <title>JDBC Examples</title> <link rel="stylesheet"...

Ввод данных в консоли и вывод одной строкой кода
Здравствуйте, помогите мне сделать вывод текста + сразу readline Я делал так: Console.WriteLine ("Введите чему равен А...

Перенести данные из memo в одной форме в memo в другой
Как перенести данные из memo в одной форме в memo в другой?

По таймеру считывать по одной строке из файла и грузить в richTextBox
Пытаюсь по таймеру считывать по одной строке из файла и грузить в richTextBox. int i; StreamReader sr = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru