Вниз
Скачать: 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.012 c
11-77814
IZVER
2002-11-05 17:01
2003.07.24
локализация KOL-приложений


1-77993
kostya
2003-07-11 16:22
2003.07.24
Помогите с Bitmap...ом


14-78053
Alexsey Orlov
2003-07-09 21:15
2003.07.24
Помогите


14-78071
KDS
2003-07-07 19:14
2003.07.24
dephi тут вообще непричем!


3-77760
alois
2003-07-01 20:55
2003.07.24
Разнесение строки из Memo по полям




   Наверх