Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

object`ы в delphi 2009


Страницы:   1 2 3 4 5

просто так ©   (2008-10-13 21:08:00) 

Ктонибудь компилировал в D2009 проги использующие object`ы?

В конструкторе при вызове objsetup почемуто портятся поля объекта и походу указатель на vmt. далее при вызове любого виртуального метода AV.

Это глюк или так и надо?


Сергей М.   (2008-10-15 16:52:00) [81]


> по существу чтонибудь есть?


По существу - в D7 полет нормальный.
Существа в Д2009 я не видел по причине неимения оной.


просто так   (2008-10-15 16:48:00) [82]

>>Сергей М. [15]
пост достойный мастера! уважаю)), а по существу чтонибудь есть?

>>Object types are supported for backward compatibility only. Their use is not recommended.
зачем нужна такая совместимость, тогда бы уж совсем отказались


Сергей М.   (2008-10-15 16:14:00) [83]


> Anatoly Podgoretsky ©   (15.10.08 16:07) [14]


Дык он уже поди целый проект нахреновертил на этом типе)


Anatoly Podgoretsky   (2008-10-15 16:07:00) [84]

> просто так  (15.10.2008 14:53:13)  [13]

Еще в Д7 или раньше было написано

Object types are supported for backward compatibility only. Their use is not recommended.


просто так   (2008-10-15 14:53:00) [85]

ничем, сделано на object`ах, в 2009 перестало работать, заинтересовался почему


Сергей М.   (2008-10-15 14:11:00) [86]


> предложения юзать классы не катит
>


Стесняюсь спросить, на какую из больных мозолей они тебе наступили ?


просто так   (2008-10-15 13:44:00) [87]

>>icWasya
не ломается [1] или чето другое?
12.0.3170.16989 ломается. до этого было еще 2 ранешних версии, тоже ломалось.

>>sniknik, Германн
Ирония конечно хорошо)). может потрудитесь объяснить что я неправильно делаю? [2] и предложения юзать классы не катит

>>Плохиш
За бочку варенья и пачку печенья - легко.


Плохиш   (2008-10-15 11:06:00) [88]


> просто так   (14.10.08 23:01) [6]
> Пожалуйста не путайте object`ы и class`ы.

ну-ка, ну-ка, расскажи-ка разницу между ними.


icWasya   (2008-10-15 11:02:00) [89]

у меня 12.0.3163.16897 - и не ломается


Германн   (2008-10-15 01:53:00) [90]


> sniknik ©   (15.10.08 01:14) [7]

Всё пропало! Гипс снимают! Клиент уезжает!
(с)


sniknik   (2008-10-15 01:14:00) [91]

> это глюк 2009, в других вериях всё ок
все пропало,  KOL "погиб", он то весь на объектах. а никто в конференции kol этого не знает, портируют его под 2009й, пишут, юникод внедряют, и даже не догадываются что он не работает... ;)


просто так   (2008-10-14 23:01:00) [92]

>> a:= zbasic.initxywh;
>>lst:= TStringList.Create; //или это
Пожалуйста не путайте object`ы и class`ы. в данном примере синтаксически всё верно. это глюк 2009, в других вериях всё ок


sniknik   (2008-10-14 22:29:00) [93]

> virtual в этом примере только чтоб показать ошибку, но в реальной проге он вообщета нужен.
раз нужен значит нужно что то менять, либо пользоваться только классовыми/статическими методами, и не держать данных в объектах, раз не хочешь их создавать. либо все таки подумать над вызовом.
(может то, что ты показал в 2009 и есть его создание, не к курсе, что там поменяли, но если бы это было правильным то и ошибки не было бы)


sniknik   (2008-10-14 22:20:00) [94]

> как ни назови, суть с ошибкой не изменится((
суть не в имени, а в вызове.
разницу видишь?
> a.initxywh;
объект не создан, виртуальные методе не инициализированы
и
> a:= zbasic.initxywh;

c названием это просто было бы очевидным
вот что на твой взгляд правильно а что нет
var
 lst: TStringList;
begin
 lst.Create; //это
 lst:= TStringList.Create; //или это


и почему?


просто так   (2008-10-14 22:00:00) [95]

>>a:= zbasic.initxywh; (имя конструктора create лучше бы смотрелось, имхо)
как ни назови, суть с ошибкой не изменится((
>>в общем либо так должно быть, либо  убрать слово virtual из описания процедуры в объекте.

так не должно быть. virtual в этом примере только чтоб показать ошибку, но в реальной проге он вообщета нужен.
если все определения скинуть в один файл, то всё работает((


sniknik   (2008-10-14 20:37:00) [96]

у меня конечно нет 2009го но
> begin
>  a.initxywh;
> end.

там изменили способ вызова конструктора? т.е. того самого метода что инициализирует виртуальные методы.
объект там теперь не нужно создавать типа  
a:= zbasic.initxywh;(имя конструктора create лучше бы смотрелось, имхо)
?
в общем либо так должно быть, либо  убрать слово virtual из описания процедуры в объекте.


просто так   (2008-10-14 11:37:00) [97]

zcad.dpr

program ZCAD;
uses
ZBasicVisible;
var
  a:zbasic;
begin
 a.initxywh;
end.

ZBasicVisible.pas

unit ZBasicVisible;
interface
uses
 zguis;
type
   pzbasic=^zbasic;
   zbasic=object(zgui)
          end;
implementation
end.

zguis.pas

unit zguis;
interface
type
zgui=object
          test:pointer;
          procedure crash;virtual;
          constructor initxywh;
    end;
implementation
procedure zgui.crash;
begin
    test:=nil;
end;
constructor zgui.initxywh;
begin //вот тут при нажатии F7 поле test запартачивается
    crash; //тут AV
end;
initialization
end.


вот выдирка с ошибкой


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо