Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.17;
Скачать: CL | DM;

Вниз

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

 
Двенадцать ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
15-1279237807
dmk
2010-07-16 03:50
2010.10.17
Подскажите зоны отдыха в Подмосковье


2-1280199324
Ш-К
2010-07-27 06:55
2010.10.17
Как отобразить на канве фрагмент метафайла?


6-1213619893
Empleado
2008-06-16 16:38
2010.10.17
"Досадные недоразумения логики TClient/ServerSocket"


15-1279448920
SD Software
2010-07-18 14:28
2010.10.17
Как в Windows 7 получить адрес не экспортируемой функции


6-1227511222
Валигози
2008-11-24 10:20
2010.10.17
Передача данных по SCP/SFTP