Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.09.2012, 14:59
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию Чуть-чуть вопросов по алгоритму

Здравствуйте, уважаемые форумчане. К сожалению, не учился на программиста, поэтому такие вещи, как блок-схема и алгоритм вызывают затруднение. Есть 2 вопроса, простой и сложнее) :
1. Есть код, например :
image1.canvas.pen.color := clRed;
image2.canvas.pen.color := clRed;
...
image116.canvas.pen.color := clRed;
- сто двадцать раз повторять как бы не торт, возможно же как то оформить в цикл?
2. Все по прежнему по поводу программки, тритий вопрос) :
Есть файлик вида :
Василий;9:05:48;Пришел
Николай;12:03:57;Пришел
Василий;15:03:12;Ушел
Василий;17:45:00;Пришел
Николай;18:00:00;Ушел
Василий;18:01:00;Ушел
Программе нужно на шкале времени зеленым показать, когда был на работе Василий. А как мы видим - он был с девяти утра, до трех дня, и в конце дгя на 15 минут заходил.
Программно, я вот что придумал :
положил на форму image1, длинной ровно 720 (это важно), шириной 9.
Беру из строки время, часы множу на 60 и прибавляю минуты - получается первая точка, когда он пришел. То же самое делаю с точкой ухода. Мы получаем кол-во минут с начала дня когда она пришел и кол-во минут с начала дня когда ушел. Т.к. минут с сутке ровно 1440, а пикселей на канвасе 720 - то просто делим числа / 2 и получаем точку уже на канве. Думаю вроде понятно рассказал.
Но возникли сложности!
Как грамотно построить массив точек, если есть такие камни :
1. Нельзя последовательно создать точку пришел / ушел, по четности, т.е. не обязательно первая запись в файле будет "пришел", а вторая "Ушел", и не обязательно двадцатая будет "Ушел" :
1.1. Вася может остаться в ночь, а отсчет идет с 00(в файле).
1.2. В файле лога может быть записи, что он уходил несколько раз подряд / или приходил несколько раз подряд - эти моменты программа должна игнорировать.
1.3. Абсолютно неизвестно, сколько раз он может приходить / уходить.
*****
Программная часть вопроса сейчас в принципе не вызывает затруднения (спасибо Полисмену огромное), а вот с алгоритмом беда(((...
Может ли кто добрый озвучить, как это можно проще сделать? Просто мысли и идеи?
Заранее спасибо
Ответить с цитированием
  #2  
Старый 20.09.2012, 15:22
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от alexusankov
Здравствуйте, уважаемые форумчане. К сожалению, не учился на программиста, поэтому такие вещи, как блок-схема и алгоритм вызывают затруднение. Есть 2 вопроса, простой и сложнее) :
1. Есть код, например :
image1.canvas.pen.color := clRed;
image2.canvas.pen.color := clRed;
...
image116.canvas.pen.color := clRed;
- сто двадцать раз повторять как бы не торт, возможно же как то оформить в цикл?
Код:
var
  i: Integer;
begin
  for i := 1 to 116 do
  begin
    (FindComponent('image'+IntToStr(i)) as TImage).Canvas.Pen.Color := clRed;
  end;
end;
p.s. Откуда столько картинок на форме? Вручную бросал что-ли?
Ответить с цитированием
  #3  
Старый 20.09.2012, 15:31
Аватар для alexusankov
alexusankov alexusankov вне форума
Новичок
 
Регистрация: 27.08.2012
Сообщения: 78
Версия Delphi: C++/Delphi 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Код:
var
  i: Integer;
begin
  for i := 1 to 116 do
  begin
    (FindComponent('image'+IntToStr(i)) as TImage).Canvas.Pen.Color := clRed;
  end;
end;
p.s. Откуда столько картинок на форме? Вручную бросал что-ли?
Ну да, Василий не один, сотрудников 116).
Ответить с цитированием
  #4  
Старый 20.09.2012, 16:13
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Я бы не рисовал в отдельных картинках.
Я бы рисовал на канве паинтбокса, для всех 116.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #5  
Старый 20.09.2012, 16:31
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

В DrawGrid.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #6  
Старый 20.09.2012, 21:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

А зачам их всех разом отображать? Если число сотрудников прибавится, то всю программу переписывать.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025