Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
8-78004
sergn
2003-04-01 20:37
2003.07.24
Совмещение векторной печати и Bitmap с прозрачными участками


8-78011
БРУТЪ
2003-04-02 15:55
2003.07.24
Рисование на канве?


14-78104
Вован
2003-07-07 16:14
2003.07.24
Так значить в Delphi нельзя добавить lookup поле у dataset в


3-77744
chum
2003-06-30 10:56
2003.07.24
Ошибка BDE или что?


1-77875
Дома
2003-07-13 23:08
2003.07.24
2 вопроса (RichEdit и TabControl)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский