| 
| 
 | Вопрос # 6 526/ вопрос решён / | 
 |  Уважаемые эксперты!Пропала подсветка циклов в редакторе кода. Заметил только сейчас. Куда я случайно нажал и все испортил?
 Примечание #1 (20 марта 2014, 18:13): Раньше были такие цветные полосочки с левой стороны кода, а begin и end были разноцветными... 
 
|  |   Вопрос задал: zvygin1964 (статус: Посетитель)Вопрос отправлен: 20 марта 2014, 18:09
 Состояние вопроса: решён, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 19; последнее сообщение — 17 мая 2014, 12:03; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 20 марта 2014, 18:16 [#1]: Цитата (zvygin1964): Раньше были такие цветные полосочки с левой стороны кода, а begin и end были разноцветными... Скриншот где?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 22 марта 2014, 02:11 [#3]: Цитата (zvygin1964): Ой, бяда-бяда, огорченье!!!1...
 Какая, хоть, версия delphi-то? У меня в 7-й фолдинга отродясь не было, и ничо, обходился.
 
   Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Толяныч (статус: 4-ый класс), 22 марта 2014, 10:20 [#4]:Ну  ты  это  напрасно,  прога  зупер.  А  цикл так вооще : с 0 до  24 ни фига не делать !  Это - про меня ... И не смущай  девушков  таким откровенным  возгласом  восхищения   |  
|   | zvygin1964 (статус: Посетитель), 22 марта 2014, 11:09 [#5]:Все работает до: for i:=0 to n do c[i+1]:=c[i]+1; //заполняю массив расчетными часами в размерности от 0 до 24+24
 А дальше я пытался проверить содержимое элементов массива выполнению условия if ... then ... else ...
 Ответ про цветные полосочки понял как:"Всё нормально, просто это другая версия среды".
 Я до этого дня думал, что это Delphi 7.
 Куда переставить:"И вот ЭТО, блин",-пока не знаю, вроде должно стоять в этом месте...
 А какие у вас есть предложения?
 Пытаюсь получить бегущую строку из цифр от 0 до 24 (как таблица часовых поясов:"А в Петропавловске-Камчатском полночь").
 |  
|   | Толяныч (статус: 4-ый класс), 22 марта 2014, 16:26 [#6]:Да  пустой  цикл  ставь  в  какое  хошь  место, все равно компилятор его выкинет. Наверно. |  
|   | min@y™ (статус: Доктор наук), 22 марта 2014, 16:50 [#7]: Цитата (zvygin1964): for i:=0 to n do c[i+1]:=c[i]+1; //заполняю массив расчетными часами в размерности от 0 до 24+24 Чего в итоге должно быть в массиве-то? И зачем?
 
 Цитата (zvygin1964): А дальше я пытался проверить содержимое элементов массива выполнению условия if ... then ... else ... Зачем проверять элементы массива, которые ты САМ только что заполнил значениями?
 
 Цитата (zvygin1964): Ответ про цветные полосочки понял как:"Всё нормально, просто это другая версия среды". Понял, как всегда, неправильно.
 
 Цитата (zvygin1964): Я до этого дня думал, что это Delphi 7. Истина где-то рядом, ага...
 
 Цитата (zvygin1964): Куда переставить:"И вот ЭТО, блин",-пока не знаю, вроде должно стоять в этом месте... А кто говорил про "переставить"? Я спрашивал "...это, блин, чо?". И выделил прямоугольником специально, шоб носом ткнуть.
 
 Цитата (zvygin1964): А какие у вас есть предложения? Перечитать ещё раз 100 "сагу про X-Y-Z", а потом объяснить, что ж тебе, таки, надо. Что у тебя на входе (до begin) и что должно быть на выходе (после end)?
 
 Цитата (zvygin1964): Пытаюсь получить бегущую строку из цифр от 0 до 24 (как таблица часовых поясов:"А в Петропавловске-Камчатском полночь").  Тогда зачем тут массивы и Memo1, Memo4?
 
 Цитата (Толяныч): все равно компилятор его выкинет. Наверно.  146%.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | zvygin1964 (статус: Посетитель), 23 марта 2014, 21:24 [#8]:-"Чего в итоге должно быть в массиве-то?",-ОТВЕТ: мне безразлично, что будет в массиве."И зачем?",-ОТВЕТ: я научился массив создавать! -"Зачем проверять элементы массива, которые ты САМ только что заполнил значениями?",-ОТВЕТ: чтобы научиться проверять соответствие элементов массива необходимым для меня свойствам  в соответствии содержимым урока Ерёмина А.А. №14 "Выбор (ветвления)":  https://www.delphi-int.ru/articles/114/ ;
 -"Понял, как всегда, неправильно",-ОТВЕТ: как смог;
 -"Истина где-то рядом, ага...",-ОТВЕТ: посылаю два скриншота с картинками загрузки Delphi. По какому из них вы меня пытаетесь обучать? ( http://gfile.ru/a5zPV ) или по ( http://gfile.ru/a5Y1W );
 -"И выделил прямоугольником специально, шоб носом ткнуть",-ОТВЕТ: во что носом ткнуть? В точку с запятой или чего? Вы ребенка в двухмесячном возрасте тоже в дерьмо сразу носом суёте, или сначала от груди матери оторвёте?
 -Сагу перечитал ещё раз;
 -"Тогда зачем тут массивы и Memo1, Memo4?",-ОТВЕТ: массив просто попробовал в учебных целях, а текстовый редактор Memo использую после каждого действия, чтобы увидеть произошедшие изменения в данных и контролировать ход выполнения программы (это единственный текстовый редактор, который меня немного понимает под Вашим снисходительным оком).
 -"компилятор его выкинет",-ОТВЕТ: дайте правильный пример, Толяныч: , это уже задание для Вас:
 Элементы массива проверить на соответствие условию  if ... then ... else ... и записать в другой массив.
 |  
|   | Толяныч (статус: 4-ый класс), 23 марта 2014, 21:48 [#9]:Даю правильный пример. for i:=0 to n do ; // Это пустой цикл, и компил его выбросит.
 //..Разве что отключить оптимизацию...
 Компилю.
 Вычеркиваю эту строчку.
 Компилю. Ничего не изменилось.
 
 Ну как, мне задание засчитано ?
 |  
|   | zvygin1964 (статус: Посетитель), 23 марта 2014, 22:04 [#10]:Я просил научить меня, как элементы массива проверить на соответствие условию if ... then ... else ... и записать в другой массив. Это можно делать не торопясь, до конца моей жизни. А вы сейчас о чём? |  
|   | min@y™ (статус: Доктор наук), 24 марта 2014, 03:20 [#11]: Цитата (zvygin1964): ОТВЕТ: мне безразлично, что будет в массиве.ОТВЕТ: я научился массив создавать!
 ОТВЕТ: чтобы научиться проверять соответствие элементов массива необходимым для меня свойствам...
 Вы ребенка в двухмесячном возрасте тоже в дерьмо сразу носом суёте, или сначала от груди матери оторвёте?
 
 БРЕД. Полный бред.
 
 Цитата (zvygin1964): По какому из них вы меня пытаетесь обучать? По "заставка Delphi 7 без полосочек.JPG".
 
 Цитата (zvygin1964): чтобы научиться проверять соответствие элементов массива необходимым для меня свойствам в соответствии содержимым урока Ерёмина А.А. №14 "Выбор (ветвления)": https://www.delphi-int.ru/articles/114/  ;Сходил по ссылке, никаких массивов там не нашёл, только теорию по ветвлению.
 
 Цитата (zvygin1964): во что носом ткнуть? В точку с запятой или чего? Уже теплее... Короче, цикл по for (с параметром) в общем виде:
 
 for Index:= AFrom to {или downto} ATo do { тело цикла } ; // <--- точка с запятойУ тебя получилось пустым тело цикла, поэтому компилятор просто проигнорировал всю твою писанину от "for" до ";" включительно. И поэтому твой оператор
 if c[i] > 24 then ...выполнится только 1 раз, причём индекс "i" в этом месте будет иметь неопределённое значение (мусор, любое число); представляю, как твой компайлер матерится на тебя сообщениями типа [Warning] и [Hint], на которые ты не обращаешь внимания!  
 Цитата (zvygin1964):  текстовый редактор Memo использую после каждого действия, чтобы увидеть произошедшие изменения в данных и контролировать ход выполнения программы (это единственный текстовый редактор, который меня немного понимает под Вашим снисходительным оком). Хорош фигнёй заниматься, ибо для этих (и не только) целей есть встроенный отладчик, с помощью которого отладка ускоряется в 100500 раз по сравнению с использованием визуальных компонентов для отображения промежуточных значений переменных.
 
  Что, Андрюха не наприсал урок про использование отладчика? Зря!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 24 марта 2014, 04:25 [#12]:Теперь по делу. Если включить телепатор, то, судя по твоему жуткому коду, ты хотел получить:
 
 
 час в текущих сутках - число в диапазоне [0..23];
заполнить массив из 24 часов, начиная с текущего часа - (если, к примеру, сейчас время 14:32, то массив должен получиться такой: "14, 15, ..., 23, 0, 1, ..., 13").
 Если я предположил правильно, попробую сотворить какое-нибудь решение на коленке. Вот тебе домашнее задание:
 
 №1 - разобраться, как работает вот этот код:
 
 const
  HrCount = 24;
var
  c24: array[0..HrCount - 1] of Byte;
  Index: Integer;
begin
  c24[0]:= Trunc(24 * Frac(Now())); // начальный элемент массива = [0...23]
 
  // цикл, 23 итерации
  for Index:= 1 to HrCount - 1 do
    begin
      c24[Index]:= c24[Index - 1] + 1;
 
      // ветвление
      if c24[Index] > 23
        then Dec(c24[Index], 24); // эта строка выполнится не более 1 раза
    end;
 
  // здесь имеем полностью заполненный массив, который можно вывести,
  // посмотреть, обработать и т.д.
end;Домашнее задание №2* (со звёздочкой, решишь - поставлю 5 за четверть
  ). Выяснить назначение данной функции: 
 function TimeSpan(const AFrom, ATo: TDateTime): TTime;
var
  F, T: TTime;
begin
  F:= Frac(AFrom); 
  T:= Frac(ATo);   
 
  if T >= F
    then Result:= Frac(T - F)
    else Result:= Frac(1 - (F - T));
end;Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | zvygin1964 (статус: Посетитель), 25 марта 2014, 23:43 [#13]:Ответ на домашнее задание №1: procedure TForm1.Button1Click(Sender: TObject);
 var
  c24: array[0..HrCount - 1] of Byte;//Определил статический массив, 1 измерения в диапазоне Byte (0..255)
  Index: Integer; //индексы массива являются целыми числами, размер которых не гарантируется (до Int64)
 begin
 c24[0]:= Trunc(24 * Frac(Now())); { начальный элемент массива = [0...23] {Функция Frac возвращает дробную часть числа с
плавающей запятой от функции Now (Возвращает текущие дату и время в формате TDateTime.(Тип TDateTime - это обычный тип
double. Целая часть этого числа - это номер дня от какой-то фиксированной даты в прошлом, дробная часть - это часть от
текущих суток - из нее и вычисляется время. Соответственно Now содержит обе этих части))
  Функция Trunc возвращает целочисленную часть числа с плавающей запятой.
 Ну, где-так: c24[0]:=12=Trunc(24*0,5)=Trunc(24*Frac(24,5))}
   // цикл, 23 итерации
  for Index:= 1 to HrCount - 1 do {счетчик := начальное_значение равно 1, до конечного значения равного  HrCount-1=23}}
    begin       {действие при каждом увеличении счетчика}
      c24[Index]:= c24[Index - 1] + 1; {присваиваю элементу с очередным индексом значение предыдущего элемента
увеличенного на 1 час}
      { ветвление и тут же проверяю соответствует ли он человеческому часу (от 0 до 24)}
      if c24[Index] > 23          //если элемент больше 23-го часа
        then Dec(c24[Index], 24); {то выполним процедуру  Dec (из System unit), которая уменьшает переданный ей как
параметр порядковую переменную}
        {procedure Dec ( var Variable : Ordinal variable; Count : Integer ) ;
 в данном случае произойдет уменьшение элемента массива на Count:=24.}
{Поскольку дальнейшее вычисление будет производиться от этой декриментированной порядковой переменной, то эта строка
выполнится не более 1 раза}
    end;
    {else , begin, end;   тут не понадобились, потому, что иначе выполняется действие} 
 
c24[Index]:= c24[Index - 1] + 1; //до элемента массива  с номером HrCount - 1
    Label1.Caption:=FloatToStr(c24[23])+'    '+FloatToStr(c24[22])+'    
 
'+FloatToStr(c24[21])+'    '+FloatToStr(c24[20])+'    '+FloatToStr(c24[19])+'    
 
'+FloatToStr(c24[18])+'    '+FloatToStr(c24[17])+'    '+FloatToStr(c24[16])+'    
 
'+FloatToStr(c24[15])+'    '+FloatToStr(c24[14])+'    '+FloatToStr(c24[13])+'    
 
'+FloatToStr(c24[12])+'    '+FloatToStr(c24[11])+'    '+FloatToStr(c24[10])+'    
 
'+FloatToStr(c24[9])+'    '+FloatToStr(c24[8])+'    '+FloatToStr(c24[7])+'    
 
'+FloatToStr(c24[6])+'    '+FloatToStr(c24[5])+'    '+FloatToStr(c24[4])+'    
 
'+FloatToStr(c24[3])+'    '+FloatToStr(c24[2])+'    '+FloatToStr(c24[1])+'    
 
'+FloatToStr(c24[0]);
   end;
end. |  
|   | zvygin1964 (статус: Посетитель), 25 марта 2014, 23:46 [#14]:Ответ на домашнее задание №2*: функция переключает циферблат часов в таймер(осталось до полуночи) и обратно. function TimeSpan(const AFrom, ATo: TDateTime): TTime;{подпрограмма, участвующая в выражении как операнд. Состоит из
зарезервированного слова function, имени функции -TimeSpan,необязательные заключенные в круглые скобки формальные
параметры (постоянные числа AFrom и ATo типа TDateTime  как переменная Double, с датой как целая часть, а время как
дробная. Дата сохраняется как число дней с 30 декабря 1899.; тип возвращаемого функцией значения TTime "23:59:59", то
есть "HH:MM:SS"- часы, минуты, секунды через двуеточие.}
var
  F, T: TTime;{эти переменные имеют значения в виде значения как "23:59:59"}
begin
  F:= Frac(AFrom);//Frac возвращает дробную часть постоянного числа AFrom, то есть время
  T:= Frac(ATo);  //Frac возвращает дробную часть постоянного числа ATo, то есть время
 
  if T >= F    //если время T больше или равно  F
    then Result:= Frac(T - F) //то получим текущее время
    else Result:= Frac(1 - (F - T));{иначе сколько времени осталось до полуночи}
end; |  
|   | zvygin1964 (статус: Посетитель), 25 марта 2014, 23:49 [#15]:А помог поставить недостающую точку с запятой в моём некрасивом коде Посетитель kritika . Пиво перечислено по указанным им реквизитам в славный город Одесса : 
 procedure TForm1.Button1Click(Sender: TObject);
  var
   S: string;     //часы реального времени, например 15, можно выводить в Memo
   Chas: Integer; //часы реального времени, например 15.Для вычислений.
   i:Integer;    {номера элементов массива написания часа}
   begin
  S:= FormatDateTime( 'h', Now); //функция реального времени в часах MSK (GMT+4)
  Chas:= StrToInt(S);////часы реального времени (например 15 часов).Для вычислений.
  c[0]:= Chas ;//подготавливаю значение элемента начала массива времени в часовых поясах
   for i:=0 to n do c[i+1]:=c[i]+1; {заполняю массив расчетными часами в размерности от 0 до 24+24 часов, но это не
правильно, поэтому:}
     for i:=0 to n do //Проверяю входят ли часы в человеческий диапазон 0-24 часа и исправляю ошибку:
   if c[i]>24 then    {если часов больше 24, то это ошибка, и ее устраняем}
    begin
    c24[i]:=c[i]-24;//посчитал и записал в другой массив
    end
   else
   begin
   c24[i]:=c[i];    //иначе ничего не делать не надо. Значение правильное в диапазоне 0-24часа
   end ;
 end;
end. |  
|   | min@y™ (статус: Доктор наук), 26 марта 2014, 02:31 [#16]: Цитата (zvygin1964): функция переключает циферблат часов в таймер(осталось до полуночи) Не угадал.
 
 Цитата (zvygin1964):  и обратно. Опять не угадал. Садись, 2. Останешься на второй год.
  
 Цитата (zvygin1964): А помог поставить недостающую точку с запятой в моём некрасивом коде Посетитель kritika . Правильно сделал. Лучше пиво сейчас, чем ещё один конкурент потом.
 Я же пытался тебя научить пользоваться своими мозгами при написании кода. Выходит, не надо было этого делать и терять своё время. Мне даже по этому поводу один коллега личное сообщение прислал, вот такое:
 
 
  
 Пожалуй, коллега прав. Всего тебе хорошего и творческих узбеков.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 26 марта 2014, 02:49 [#17]: Label1.Caption:=FloatToStr(c24[23])+'    '+FloatToStr(c24[22])+ ...ГЕНИАЛЬНО!!! Хорошо, что это часы в сутках, а не секунды в часе! 
 Цитата (zvygin1964): тип возвращаемого функцией значения TTime "23:59:59", то есть "HH:MM:SS"- часы, минуты, секунды через двуеточие. ГЕНИАЛЬНО!!!
 
 Цитата (zvygin1964): формальные параметры (постоянные числа AFrom и ATo типа TDateTime ГЕНИАЛЬНО!!!
 
 var
  F, T: TTime;{эти переменные имеют значения в виде значения как "23:59:59"}Да НЕУЖЕЛИ???!!!111
   if T >= F    //если время T больше или равно  F
    then Result:= Frac(T - F) //то получим текущее время
    else Result:= Frac(1 - (F - T));{иначе сколько времени осталось до полуночи}Ваще, no comments... Рукалицо...  Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | zvygin1964 (статус: Посетитель), 13 апреля 2014, 09:56 [#18]:min@y™:   "Хорошо, что это часы в сутках, а не секунды в часе!"    ,- это интересно.
 |  16 мая 2014, 08:55: Статус вопроса изменён на решённый (изменил автор вопроса — zvygin1964): Ответ min@y™ :"Это разные версии", полосочки будут при наличии в ней CnPack. 
|   | zvygin1964 (статус: Посетитель), 17 мая 2014, 12:03 [#19]:Не понял, а куда делись "5" для давшего правильный ответ  min@y™. Поставьте пожалуйста! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |