Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.24;
Скачать: 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 вся ветка

Текущий архив: 2003.07.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
14-78111
nick-from
2003-07-08 16:08
2003.07.24
чем лучше всего воспользоваться для преобразования


14-78061
Александр Бакулин
2003-07-08 17:34
2003.07.24
Поговорим об автоматизации...


9-77706
Antichacker
2003-02-02 15:37
2003.07.24
Материал из GLSceneMatLibrary виден только в design mode


1-77868
AndrewVolkov
2003-07-13 18:28
2003.07.24
Com port - ReadFile???


1-77890
stimm
2003-07-13 21:00
2003.07.24
Размер файла в байтах без FileSize