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

Вниз

как понимать факт не ошибки   Найти похожие ветки 

 
Двенадцать ©   (2010-07-14 14:15) [0]

procedure TForm1.Button1Click(Sender: TObject);
var
 bb: tbutton;
begin
 try
   ShowMessage(bb.Caption + bb.Font.Name);
 except
  on E:Exception do
  begin
    ShowMessage(E.Message);
  end;
 end;
end;

Что-то выводит. Но почему не ошибается?!
delphi 7


 
Омлет ©   (2010-07-14 14:21) [1]

Случайность.


 
Двенадцать ©   (2010-07-14 14:28) [2]

плохо.
надо бы ошибку.
придется к nil все переписать


 
Омлет ©   (2010-07-14 14:30) [3]

Надо инициализировать переменные перед использованием.


 
Двенадцать ©   (2010-07-14 14:32) [4]

надо, чтоб всегда была ошибка, если неинициализирована


 
stas ©   (2010-07-14 14:34) [5]

А теперь сделайте на форме без кнопок.
т.к.bb не проинициализирован,то скорее всего bb получает идентификатор последнего созданного объекта, в вашем случае это кнопка.


 
stas ©   (2010-07-14 14:36) [6]

Двенадцать ©   (14.07.10 14:32) [4]
Компилятор предупреждает
[Warning] main.pas(154): Variable "bb" might not have been initialized


 
Двенадцать ©   (2010-07-14 14:43) [7]


> Компилятор предупреждает

+

> т.к.bb не проинициализирован,то скорее всего bb получает
> идентификатор последнего созданного объекта


все это хорошо, но надо - чтоб всегда была ошибка
это пример - реальный код нет смысла приводить - смысл уже тут :)


 
Омлет ©   (2010-07-14 14:44) [8]

> но надо - чтоб всегда была ошибка

Пиши в тех.поддержку.


 
Двенадцать ©   (2010-07-14 14:45) [9]


> Пиши в тех.поддержку.

смайлик забыл?

:)


 
Омлет ©   (2010-07-14 14:46) [10]

Или используй вместо лакальных переменных поля класса - те всегда инициализируется автоматически.


 
stas ©   (2010-07-14 14:49) [11]

Двенадцать ©   (14.07.10 14:45) [9]
В Delphi 2009 тоже работает, так что есть смысл писать в поддержку )


 
12 ©   (2010-07-14 15:40) [12]

написал :)


 
Anatoly Podgoretsky ©   (2010-07-14 16:31) [13]

> Двенадцать  (14.07.2010 14:32:04)  [4]

Это фантастика


 
Anatoly Podgoretsky ©   (2010-07-14 16:32) [14]

> stas  (14.07.2010 14:36:06)  [6]

Варнинги отключены, что бы не мешали гады безошибочной компиляции.


 
Дмитрий С ©   (2010-07-14 16:39) [15]


> т.к.bb не проинициализирован,то скорее всего bb получает
> идентификатор последнего созданного объекта, в вашем случае
> это кнопка.

Скорее обращается по адресу из "остатков в стеке" :)


 
12 ©   (2010-07-16 13:42) [16]

а вот, к слову, нет никаких кнопок на форме.
и явное приведение к nil

procedure TForm1.FormShow(Sender: TObject);
var
 B: tbutton;
begin
 B:=nil;
 ShowMessage(B.Caption);// + b.Font.Name);
end;

и нет ошибки! Безобразие.
(если раскоментить - уже есть)


 
Anatoly Podgoretsky ©   (2010-07-16 13:47) [17]

> 12  (16.07.2010 13:42:16)  [16]

Зачем ты это делаешь, зная что B = nil
В конце концов ты что про Assigned не слышал?


 
12 ©   (2010-07-16 14:03) [18]


> Зачем ты это делаешь, зная что B = nil

да уже не зачем, просто, из принципа..


 
Anatoly Podgoretsky ©   (2010-07-16 14:53) [19]

> 12  (16.07.2010 14:03:18)  [18]

На зло маме уши отморожу.



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

Форум: "Прочее";
Текущий архив: 2010.10.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
15-1279271125
12
2010-07-16 13:05
2010.10.17
процедура в oracle. Подскажите


15-1279204090
Ихтиандр
2010-07-15 18:28
2010.10.17
indy и сокеты


15-1279450570
Вася
2010-07-18 14:56
2010.10.17
Закрытие программы в delphi


15-1279010786
Артур Д.
2010-07-13 12:46
2010.10.17
Опыт работы с фрилансерами


3-1246354424
Дмитрий Белькевич
2009-06-30 13:33
2010.10.17
Проблема с добавлением записи в таблицу. Delphi 2009.





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