Проблема в Delphi!!! Это у всех так или только у меня??
{$APPTYPE CONSOLE}
procedure proc1;
var
ff : boolean;
procedure proc2;
begin
asm
lea eax, ff
mov [eax], 1 // Тут ошибка
end;
end;
procedure proc3;
begin
asm
mov ff, 1 // Почему ff не меняеться
end;
end;
begin
proc3;
proc2;
if ff then writeln('уря');
end;
begin
proc1;
readln;
end.
Еще в Дельфях бывает ситуация: пишешь код, и при определенном коде время компиляции программы долгое. Около 5 - 10 сек(Обычно дельфи компилирует быстро < 1 сек). Это так раздражает.
mov [eax], 1 // Тут ошибок нет.
Было похожее когда сторонняя программа переодически загружала процессор.
lea eax, ff
mov [eax], 1 // да тут ошибок нет
end;
Меняеться. Вопрос в том что. В моем дельфи @ff = $12FFA7, а в eax после lea содержиться $12FF97. Из-за этого ff не меняеться, мало того при выполнении
Может у меня Delphi косячный?
Это что такое? Нечего здесь флудить. Если такой умный подсказал бы, а нет молчи.
Washington, кстати, не флудит, а говорит полезные вещи. В 99,9999 процентах, когда написанная программа не работает - это ошибка кода, а не среды.
Delphi 7 насколько я знаю, самая стабильная среда. Так что проблема в прокладке между стулом и клавиатурой...
Ха. А вот и нет. Из-за этих 2х косяков, она лишаеться звания самой-самой. Хорашая может, я неспорю хорошая, но Turbo Pascal, по времени компиляции и количеству косяков лучше. Да и еще ассемблер.(Я еще не встречал лучше этих 2х прог. Хотя ассемблер это не среда, а язык). Turbo Pascal самый лучший. Так что не но, но.
Сдесь собрались умники, как я вижу. Раз так, может мне кто-нить скажет в чем ошибка?
где косяк?
Сдесь собрались умники, как я вижу. Раз так, может мне кто-нить скажет в чем ошибка?
Скажут, как только вы перестаните хамить в ответ на попытки вам помочь.
. Ха, пока я не видел ни одной попытки. Хотя нет, первый пост от Pavia.
Вам никто не обязан отвечать и помогать. Ваши косяки - лично ваши проблемы, и экзаменовать других за помощь как минимум невежливо. В конце концов, для этого имеется репутация. И перенесите разборки в приват. На открытом форуме им не место.
Ты задал вопрос "Это у всех так... ?". На что тебе Washington вполне резонно ответил, что нет, не у всех - надо искать ошибку в коде (и был прав). Зачем же лезть в бутылку?
Странная штука Delphi. Один и тот же код генерируте по разному, в режиме оптимизации и без. Естественно я оптимизацию убрал, чтоб можно было отлаживать программы, а то он некоторые переменные оптимизирует и их не возможно посмотреть.
Так вот код без оптимизатора
push ebp
mov ebp, esp
lea eax, [ebp - $04]
mov [eax], $01
pop ebp
ret
proc2 endp
...
push ebp
call proc2
pop ecx
Код с оптимизатором.
lea eax, [ebp - $04]
mov [eax], $01
ret
proc2 endp
...
call proc2
Странно. вроде один и тот же код, а компилируеться по разному. Вообщем дело в оптимизации.
Это - сразу в перлы!
Кстати, компилируй прогу в Делфи, но запускай её в файл-менеджере (желательно) иначе будешь ловить даже те косяки, для которых написал обработчики.
______________
Накосячил - нечего сваливать свою вину на других.
Извините - вторую страницу не заметил
отлов косяков, для которых написал обработчики в Delphi можно отключить