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

Вниз

Прикол какой-то   Найти похожие ветки 

 
Shnabs   (2004-12-28 19:34) [0]

Привет.
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
i:=i+1;
form1.Caption:=inttostr(i);
end;
Поидее при каждом нажатии кнопки капшн формы должен увеличиваться? А он увеличивается только если переменная i объявляется глобальной. А так капшн равен "9188949". Почему?


 
Fay ©   (2004-12-28 19:40) [1]

Действительно, очень странно! 8)
>> А так капшн равен "9188949"
А чему должен быть равен?


 
xxxxxxx   (2004-12-28 19:42) [2]

почему, а по кочену :)
по какой он идее должен увеличиваться, если переменная локальная.
и кто иницилицировать i будет? вот и лежит там мусор.
еще не понятно? :)


 
Poirot ©   (2004-12-28 19:44) [3]

Орешник:)))
Не.. ну вообще-то переменная увеличивается:)))
только не так, как задумывалось;)


 
Fay ©   (2004-12-28 19:46) [4]

>> А он увеличивается только если переменная i объявляется глобальной
Tag := Tag + 1;
form1.Caption:=inttostr(i);


 
Shnabs   (2004-12-28 19:47) [5]

Ну, а почему же тогда:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
i:=1;
form1.Caption:=inttostr(i);
end;
капшн равен "1".


 
Poirot ©   (2004-12-28 19:48) [6]

точно.. оно так и буит в капшене:)
>>Tag := Tag + 1;
>>form1.Caption:=inttostr(i);


 
Poirot ©   (2004-12-28 19:49) [7]

Развод:))))))) это чистый развод:))


 
xxxxxxx   (2004-12-28 19:50) [8]

>Tag := Tag + 1;
>form1.Caption:=inttostr(i);
это что еще один бред?
тогда уж inttostr(tag)
и что здесь Tag полноценно заменила i :))))


 
Fay ©   (2004-12-28 19:52) [9]

2 xxxxxxx   (28.12.04 19:50) [8]
Ну не обратил внимания 8) Эта ветка не располагает к серьёзности.


 
xxxxxxx   (2004-12-28 19:53) [10]

Удалено модератором


 
Sun bittern ©   (2004-12-28 20:48) [11]

Злые вы все. Опять над новичками стебаеетесь :)


 
Poirot ©   (2004-12-28 20:51) [12]

а потом скажет, что он реальный программер:) И нас тут буит буквально уличать во всём, в чём только можно:))
Совет на скорую руку: Книжка дельфи для чайников, но лучше всего - Паскаль для "оочень сильно начинающих:))"


 
begin...end ©   (2004-12-28 21:06) [13]

> Shnabs   (28.12.04 19:34)

Вот отрывок из справки:

If you don"t explicitly initialize a global variable, the compiler initializes it to 0. Local variables, in contrast, cannot be initialized in their declarations and contain random data until a value is assigned to them.

Перевод. Если Вы не инициализируете явно глобальную переменную, компилятор инициализирует её в 0. Локальные переменные, наоборот, не могут быть инициализированы в своих объявлениях и содержат случайные данные до тех пор, пока им не будут присвоены значения.


 
Profi ©   (2004-12-28 21:07) [14]

Не, ну бывает! Не понимает парень, что он при каждом нажатии иницилицирует i заново, а следовательно в ней лежит мусор (любое число). Он его еще и увеличивает на 1. Ну не может он этого понять :)


 
Sandman25 ©   (2004-12-29 10:24) [15]

[14] Profi ©   (28.12.04 21:07)

Ситуация еще более интересная - при каждом нажатии кнопки выводится одно и то же число. Потому что inc(i) транслируется в inc(esi)


 
Sandman25 ©   (2004-12-29 10:26) [16]

И даже если убрать оптимизацию, всё равно число будет одно и то же, несмотря на изменение команды на inc dword ptr [ebp-$08]


 
DiamondShark ©   (2004-12-29 10:55) [17]


> И даже если убрать оптимизацию, всё равно число будет одно
> и то же, несмотря на изменение команды на inc dword ptr
> [ebp-$08]

Ну правильно. Программа крутится в регулярном цикле.
Соответсвенно, и мусор в стеке довольно регулярный.
;)


 
Sandman25 ©   (2004-12-29 10:58) [18]

[17] DiamondShark ©   (29.12.04 10:55)

Логично. Хотя можно сделать и другой вывод - происходит "ошибка" при записи в стек :)


 
DiamondShark ©   (2004-12-29 11:10) [19]

А... эээ... Это, видимо, вывод для интеллекта явно выше среднего.
"Ниччо не понимаю" (ц)



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

Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.035 c
14-1103960552
Поручик
2004-12-25 10:42
2005.01.16
SATA


4-1100444311
Doc-N
2004-11-14 17:58
2005.01.16
Изменение таблици импорта


1-1104276522
AAAlekzzz
2004-12-29 02:28
2005.01.16
Добавление текста из TMemo в начало любого файла.


1-1104723673
saimon
2005-01-03 06:41
2005.01.16
Про компилятор дельфи. Помогите...


14-1104139505
Hypercube
2004-12-27 12:25
2005.01.16
Ющенко победил





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский