-
Что-то там такое. В первом случае может быть вызван конструктор, присвоение во временную переменную, сравнение с ней, инкремент первой, возврат из операции инкрементированной переменной. Во втором работа с одним экземпляром.
Паскалевсикй цикл с постусловием требует каждый раз вспоминания его особенности.
-
Sha © (02.05.15 15:49) [137]
> В Паскале везде работает простая мнемоника:
> при истинном условии всегда проваливаемся ниже к следующему
> оператору,
> при ложном условии - последовательное выполнение операторов
> нарушается.
И для соответствия этой мнемонике существует два разных оператора проверки условия продолжения цикла, потому они в разных местах записи цикла находятся ?
-
> И для соответствия этой мнемонике существует два разных
> оператора проверки условия продолжения цикла, потому они
> в разных местах записи цикла находятся ?
Ну вроде бы/как бы ДА. Если сначала нужно проверить некое условие, а потом что-то делать в зависимости от результата проверки, то while.
Но если нужно обязательно что-то сделать хоть один раз, то почему бы и не repeat?
-
> Игорь Шевченко © (03.05.15 00:33) [141]
Мнемоника помогает запомнить, что и как.
Она подбирается так, чтобы соответствовать чему-либо, а не наоборот.
-
Было бы удобно еще иметь в Delphi конструкцию вроде while-else, то есть цикл и отдельная ветка для случаев, когда он ни разу не выполнился.
Вроде
while i > 0 do
Dec(I)
else
ShowMessage('I <= 0');
-
> [144] Kerk © (03.05.15 20:21)
Имхо, Оккама знал об этом.
-
Согласен с Kerk
-
несогласен с eldorad )
-
И строковый case.
:o)
-
Согласен с дядей Юрой. Впрочем конструкция множественного else if не занимает больше места.
-
Для case компилятор мог бы какие-нибудь оптимизации применять.
-
Строковый case с регулярками
-
> Юрий Зотов © (04.05.15 09:28) [148]
>
> И строковый case.
Ну да. А то "женщины уже в баскетбол играют!" (с)
То бишь я хотел сказать, что в Лазарусе уже есть такой case. :)
-
С Format-ом есть баг. Ругается на
Result := Format('uif_%.*x', [8, I]);
Хотя количество аргументов именно то, которое должно быть - два.
-
и индесацию параметров тоже не понимает:
Lines.Add(Format(#9#9'<%s>%d</%0:s>', [xme_FilePos, FilePos]));
-
> q1w2e
У тебя похоже старая версия. Обновись.
-
Да, так и есть. После обновления ушло.
Но что-то я не разобрался как обучить утилиту командной строки разбору условной компиляции. Подозреваю, что как-то это можно сделать .ficfg-файл.
Где-то можно об этом почитать?
-
>Как это переписать так же лаконично через while?
k := FindFirst(RootPath + 'Html\Report*.html', faReadOnly, SearchRec);
while k = 0 do
begin
ShowMessage(SearchRec.Name);
k := FindNext(SearchRec);
end;
?
-
>Некрасиво, конечно, но если нормального способа не предусмотрено, то ничего другого не остается.
Я у себя делал специальный таймер TThreadTimer - работающий в параллельном потоке и вызывающий код в параллельном потоке, добавил методы Start, Stop и Restart. Почему что-то такое не добавить в VCL/FMX? Неудобно же как есть.
-
> q1w2e © (19.05.15 18:00) [156]
>
> Да, так и есть. После обновления ушло.
>
> Но что-то я не разобрался как обучить утилиту командной
> строки разбору условной компиляции. Подозреваю, что как-
> то это можно сделать .ficfg-файл.
>
> Где-то можно об этом почитать?
Директивы компиляции в командной строке можно указывать с помощью параметра --defines
А написано про это в документации :)