Главная страница
    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.034 c
9-1094295542
007
2004-09-04 14:59
2005.01.16
Построение ландшафта


10-1080775305
big_bugzy
2004-04-01 03:21
2005.01.16
Подскажите, почему ком-приложение не запускается в Win98?


3-1102657832
zunder
2004-12-10 08:50
2005.01.16
Run-Time Error: Expression illegal in evaluator


14-1104350832
Hypercube
2004-12-29 23:07
2005.01.16
Inno Setup 5


3-1103097786
Arkady
2004-12-15 11:03
2005.01.16
Базы CDS





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