Форум: "Прочее";
Текущий архив: 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