Wolfram
00:05 01-03-2009 Индусский кодинг
var i, max: integer;
List: TList;
stop: boolean;

begin
max := Memo1.Lines.Count;
if Button6.Caption = 'Перемешать!' then
begin
Button6.Caption := 'Хватит!';
Randomize;
while not stop do
begin
Application.ProcessMessages;
Memo1.Lines.Move(Random (max), Random (max));
end;
end
else
begin
button6.Caption := 'Перемешать!';
stop := true;
end;
end;

Почему выделенное зеленым не обрабатывается?
Комментарии:
Гость
14:00 02-03-2009
По всей видимости потому, что stop задана локально в процедуре и инициализируется нулём при повторном запуске.
Полный код в студию! =)
Wolfram
18:36 02-03-2009
Это и есть полный код процедуры.
В том то и фишка. Дебаггер показывает, что мы попадаем в ветку после else, в частности, вот этот код button6.Caption := 'Перемешать!'; исполняется. А выделенное зеленым - нет.
Гость
19:23 03-03-2009
В Project -> Options -> Compiler отключи Optimization. А потом правь ошибки, ибо код всё равно работать не будет.
Wolfram
19:38 03-03-2009
Код я переписал, он работает. Отказался вообще от дополнительной переменной, просто сам факт...
Гость
09:51 04-03-2009
Если бы ты обращал внимание на hint, который тебе подсказывает Delphi, ты бы увидел, что у тебя "Value assigned to 'stop' never used". При включённой оптимизации срабатывает анти-индус-система, которая попросту удаляет это присваивание, т.к. в нём нет толку.