Вниз
Скачать: CL | DM;

Watches   Найти похожие ветки 

 
Lenza   (2003-07-07 12:39) [0]

Отчего даже в такой простой процедуре, как эта, при вызове переменной I в Watches может выдаваться Inaccessible Value?

procedure TForm1.Button1Click(Sender: TObject);
var I: Integer;
begin
I:=0;
Caption := IntToStr(I);
end;

На самом деле все немного сложнее, здорово обламывает. Где-то в опциях напорол, что-ли? Аж плакать хочется..(


 
Skier ©   (2003-07-07 12:41) [1]

Попробуй оптимизацию отключить.


 
Lenza   (2003-07-07 13:03) [2]

Неа, не помогает. Да и раньше с оптимизацией работало все нормалек.
Если брейкпойнт здесь: Caption := IntToStr(I);, оптимизации ещё нет.


 
MBo ©   (2003-07-07 13:12) [3]

переменная I далее не используется, вот и нет нужды компилятору хранить ее в стеке - в D5 так получается:
xor esi,esi //обнуление - никакого обращения к переменной, да и самой ее физически нет
...
mov eax, esi
call IntToStr


 
Lenza   (2003-07-07 13:26) [4]


> MBo

Используется же!: Caption := IntToStr(I)...
Но уже не важно, причина - LocalSymbols.

Спасибо всем за участие.)


 
Lenza   (2003-07-07 13:29) [5]


> MBo

Тут D7? На D5 я вообще никогда не работал.
Да и при оптимизации-то он пишет, что ..due to Optimization.)


 
pasha676   (2003-07-07 13:31) [6]


> Используется же!:

Нет. Фактически нет.


> Но уже не важно, причина - LocalSymbols.

Нет. Просто глобальные переменные не оптимизируються. Причина в том, что строчки
I:=0;
Caption := IntToStr(I);

Компилятор фактически преобразует в Caption := IntToStr(0);
О чем и писал МВо.



 
MBo ©   (2003-07-07 13:33) [7]

>Используется же!:
Компилятор прекрасно знает, что программе нужно показать не любое число, а 0, вот и делает это достойным образом


 
Lenza   (2003-07-07 13:39) [8]

Все мы умные и красивые.)

procedure TForm1.Button1Click(Sender: TObject);
var I: Integer; //это - моя первая глобальная переменная
begin
I:=0;
Caption := IntToStr(I);//а поставить здесь брейкпойнт, у меня
//почему-то при включеной оптимизации и включенной опции
//Project|Options|Compiler|Debugging|LocalSymbols - BM_SETCHECK
//показывает I:=0, спасибо Борланду за это:)
end;


 
Lenza   (2003-07-07 13:40) [9]


> MBo © (07.07.03 13:33)

Во-во, спасибо Борладу за это;)


 
Lenza   (2003-07-07 13:44) [10]

Просто до этого у меня по невнимательности проблема возникла.
На самом деле, разницы для него нет: for I:=0 to 5 do или I:=0 - все кажет, спасибо всем!)




Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.018 c
7-78176
uk
2003-04-30 20:29
2003.07.24
Как точно отловить окончание передачи в линию RS-232


14-78093
kamchatik
2003-07-08 10:31
2003.07.24
Компонент DBGrid и событие OnCellClick


14-78081
Kiril
2003-07-06 18:15
2003.07.24
С помощью чего можно получить HTML-код интернет-страницы...


14-78121
ramdy
2003-07-08 15:27
2003.07.24
Иконки покрасивее


7-78179
dim-
2003-05-14 21:28
2003.07.24
Как отследить из какой программы была послана печать и сколько ко




   Наверх