|
Вопрос # 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™. Поставьте пожалуйста!
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|