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

Вниз

Delphi + pointer = ?   Найти похожие ветки 

 
Sergey_Masloff   (2004-08-03 13:56) [40]

Kurtevich   (03.08.04 13:51) [37]
Ты считаешь ЭТО

destructor TMyObject.Destroy();
begin
inherited;
Self := nil;
end;

мелочи?!

Что ты вообще этим кодом хотел сделать?


 
Sergey Kaminski ©   (2004-08-03 13:57) [41]

Он предполагает, что после этого все переменные, в которых есть ссылка на объект будут равны nil. :)


 
ламер ©   (2004-08-03 13:57) [42]

> Kurtevich   (03.08.04 13:51) [37]

> destructor TMyObject.Destroy();
> begin
>  inherited;
>  Self := nil;
> end;

да ничего не будет. ты присвоишь параметру Self значение nil. область видимости Self - лишь текущий метод (в данном случае деструктор).


 
Digitman ©   (2004-08-03 14:00) [43]


> если я правильно понимаю ООП, то обект - это инициализированная
> переменная типа класс


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


>  Self := nil;
> end;
> чё будет?!... вопрос
> на самом деле серьезный :)


ничё не будет... глупость просто будет ... значение Self в контексте исполняющегося метода некоего объекта используется для получения ссылки на самого себя, не более того


 
Sergey_Masloff   (2004-08-03 14:01) [44]

ламер ©   (03.08.04 13:57) [42]
Не надо говорить если не знаешь


 
Kurtevich   (2004-08-03 14:01) [45]

хорошо. ладно. насчет self я прогнал. не подумавши.
только вот все-таки насчет этих самых методов, которые можно вызывать без создания обьекта... если позволите так выразиться, как отличить метод класса от метода обьекта?


 
ламер ©   (2004-08-03 14:03) [46]

> Sergey_Masloff   (03.08.04 14:01) [44]
> ламер ©   (03.08.04 13:57) [42]
> Не надо говорить если не знаешь

ну так просветите меня. в чём я неправ?


 
Digitman ©   (2004-08-03 14:06) [47]


> как отличить метод класса от метода обьекта?


посмотреть как декларирован этот метод в декларации класса, которому метод принадлежит


> насчет этих самых методов, которые можно вызывать без создания
> обьекта


любой статический метод класса можно вызвать без создания экз-ра этого класса ... другое дело, что если в теле метода осущ-ся обращение к полям тек.экз-ра, то AV неминуем


 
Kurtevich   (2004-08-03 14:06) [48]

Удалено модератором


 
Kurtevich   (2004-08-03 14:08) [49]


> посмотреть как декларирован этот метод в декларации класса,
> которому метод принадлежит
ну-ну, и... продолжайте-с, пожалуйста... :)


 
Sergey Kaminski ©   (2004-08-03 14:12) [50]

class procedure X;
class function Y: Byte;


 
Игорь Шевченко ©   (2004-08-03 14:13) [51]


> как отличить метод класса от метода обьекта?


по слову class перед объявлением, не так ли ?


 
Anatoly Podgoretsky ©   (2004-08-03 14:16) [52]

ламер ©   (03.08.04 13:52) [38]
Хоть у тебя и не объявлено методом класса, но по сути таким является. Создание объекта не требуется.


 
Kurtevich   (2004-08-03 14:18) [53]


> по слову class перед объявлением, не так ли ?
ого, ни фига себе... кто бы мог подумать... только вот TObject.Free без такой фишки обьявлен! - а веть речь шла об этом!
то есть все еще получается, что я могу вызвать любой статический метод класса без создания обьекта?
TMyObject(NIL).KissTheSystem();


 
Digitman ©   (2004-08-03 14:18) [54]


> какого ... это вобще может значить???


то и значит, что экз-р класса представляет собой не что иное как запись, структуру ... разницы между тем что из себя изнутри представляют собой экз-ры TMyType = class и TMyType = record фактически нет


> именованная область данных


да, представь себе ! переменная - это (по определению) именованая (!) область данных


> jesus my ass


просто-таки блеск остроумия ! ... ты бы лучше прислушался к тому, что тебе говорят, чем "щеголять" никчемным набором слов


 
Anatoly Podgoretsky ©   (2004-08-03 14:19) [55]

Суть твоих претензий, что тебе на нравится как реалихован язык, это легко поправимо, переходишь на другой язык, но что то мне подсказывает, что и там подобное будет.


 
Kurtevich   (2004-08-03 14:20) [56]

на самом деле всё это совершенно неправильно, и если бы Страусструп был здесь, он бы такого бы не допустил!!! :)
нельзя вызывать методы класса без создания обьекта, это очень WRONG! это уже получается не метод, а просто глобальная процедура, которую зачем-то запихнули в обьвление класса!


 
Sergey_Masloff   (2004-08-03 14:21) [57]

ламер ©   (03.08.04 14:03) [46]
>ну так просветите меня. в чём я неправ?
Я похож на адепта храма просвящения? Пишется код из трех строк ставится брейкпойнт и View->DebugVindow->CPU
посмотри как в @ClassDestroy

mov edx,[eax]
call dword ptr [edx-$08]

и вспомни как пару шагов назад ты сделал (Self := nil)

xor eax,eax

any comment?


 
ламер ©   (2004-08-03 14:21) [58]

> Anatoly Podgoretsky ©   (03.08.04 14:16) [52]
> ламер ©   (03.08.04 13:52) [38]
> Хоть у тебя и не объявлено методом класса, но по сути таким
> является. Создание объекта не требуется.

возможно, я и ошибаюсь, но в классовые методы параметром Self передаётся не ссылка на объект, а ссылка на класс. в данном же случае будет передаваться ссылка именно на объект (nil, если объект не создан).


 
Kurtevich   (2004-08-03 14:23) [59]


> то и значит, что экз-р класса представляет собой не что
> иное как запись, структуру ... разницы между тем что из
> себя изнутри представляют собой экз-ры TMyType = class и
> TMyType = record фактически нет

ну, это еже звучит гораздо лучше, чем

> объект - это структурированная запись


> просто-таки блеск остроумия !

спасибо :) стараюсь :))


 
Anatoly Podgoretsky ©   (2004-08-03 14:23) [60]

ламер ©   (03.08.04 14:21) [58]
А какая тебе разница, раз ты ей не пользуешься?


 
KSergey ©   (2004-08-03 14:27) [61]

>Kurtevich

ООП в дельфи и Си++ несколько отличается. В том числе вот этими моментами. В Си++ нет классовых ф-ций и проч. Даи само понятие класса трактуется несколько иначе
В дельфи же можно даже ссылку на класс забабахать. В С++ - нельзя (непосредственнно в языке), из-за чего в С++ нет (не имеют смысла) виртуальных конструкторов.


 
Kurtevich   (2004-08-03 14:30) [62]


> KSergey ©   (03.08.04 14:27) [61]

дык я ж и говорю, что Дельфи изнасиловала ООП и даже не поцеловала :)
а насчет ссылки на класс - в C++ есть метаклассы, если мне не изменяет память.... хотя может йих добрый дядя Борланд придумал?


 
Sergey_Masloff   (2004-08-03 14:32) [63]

Kurtevich   (03.08.04 14:30) [62]
>что Дельфи изнасиловала ООП и
чушь. ООП <> С++ (или OOP != Cpp - как угодно)


 
Kurtevich   (2004-08-03 14:34) [64]


> ООП <> С++ (или OOP != Cpp - как угодно)

:) круто... только я не понял, причем здесь это? я и не говорил что ООП=С++ или что Дельфи изнасиловала С++...


 
Digitman ©   (2004-08-03 14:34) [65]


> нельзя вызывать методы класса без создания обьекта, это
> очень WRONG!


можно ... именно методы класса - можно ... методы же объекта некоего класса - можно, но осторожно

и Борланд, дав нам такую замечательную гибкость, вовсе не обязан был действовать с оглядкой на какого-то там Kurtevich"а, который, видите ли, трясется от одной только мысли, что не сможет из-за Борланда контролировать времена жизни объектов, им же, Kurtevich"ем, потенциально создаваемых


 
Anatoly Podgoretsky ©   (2004-08-03 14:37) [66]

Digitman ©   (03.08.04 14:34) [65]

Вот только какой-то там Kurtevich"а, с этим не согласен, но продолжается пользоваться этим языком.

Ежики плакали, кололись, но продолжали есть кактус.


 
Kurtevich   (2004-08-03 14:39) [67]


> можно ... именно методы класса - можно ... методы же объекта
> некоего класса - можно, но осторожно

:) я говорю нельзя не в смысле что невозможно, а в смысле что это неправильно, некрасиво, пошло в конце концов! и дело не в том, что я "трясусь", а как раз в том, что так просто неправильно!
насчет "замечательной гибкости"... эх, лучше бы дядя Борланд дал нам гибкость иметь конструкторы по умолчанию и возможность иметь статические обьекты, а не только указатели, или inline процедуры, или... много чего еще... гибкость... %(


 
Kurtevich   (2004-08-03 14:45) [68]


> какой-то там Kurtevich"а, с этим не согласен, но продолжается
> пользоваться этим языком

эх, я ждал, когда же наконец кто-то это скажет! да, каюсь, я очень недоволен Дельфи, но продолжаю им пользоваться.. почему? а почему многие недовольны Виндой, но пользуются ею? или почему многие не любят холод и снег, но зачем-то даже зимой в метель выходят на улицу? или кого-то бесит, что автомобиль приходится заправлять бензином, но он все равно упорно на нем ездит? да потому что НАДО ТАК! и никуда от этого не денешься, но это не значит, что если ты чем-то пользуешься, то ты должен сидеть и радоваться "ах, какая хорошая вещь! она идеальна!"... неужели вам, о великие мастера, ВСЁ нравится в Дельфи? если так, то может вы мало с ней работали? (прошу не рассматривать последнюю фразу как намек на чей-либо непрофессионализм)


 
Algol   (2004-08-03 14:46) [69]


> Kurtevich   (03.08.04 14:30) [62]
> дык я ж и говорю, что Дельфи изнасиловала ООП и даже не
> поцеловала :)


Чего-то я не пойму. Вы хотите сказать что статические методы класса это отход от ООП ??
Да вы посмотрите на современный framework от майкрософта, там статические методы используются на каждом шагу, и гораздо шире чем в Делфе...


 
Думкин ©   (2004-08-03 14:48) [70]

> [56] Kurtevich   (03.08.04 14:20)
> на самом деле всё это совершенно неправильно, и если бы
> Страусструп был здесь, он бы такого бы не допустил!!! :)

Ну вот. Как всегда кривостьв  одном ищется в другом. И в фидо также. Еслия пишу криво, то надо переписать Дельфи нафик, полностью.


 
Kurtevich   (2004-08-03 14:49) [71]


> Algol   (03.08.04 14:46) [69]

не знаю, что вы подразумеваете под статическими методами класса, но если то же, что и я, то я совсем не об этом говорил, а об том, что в Дельфи типа можно вызывать методы класса без создания обьекта. а что  такое framework я все рано не знаю (ах, несчастныя я ламер! :"-( )


 
Digitman ©   (2004-08-03 14:52) [72]


> это неправильно, некрасиво, пошло


ты вообще чего в Паскаль-то приехал ? в Паскале (неважно в каком !) неоднозначности и неопределенности не допускаются в принципе ! Ну и пиши себе на СРР, коль тебе так нравится ! Что ты здесь "разсиплюплювался"-то ?

Паскаль-компилятор работает по однопроходной схеме, многие фичи иных языков в нем попросту нереализуемы (да и за ненадобностью они зачастую) или чрезвычайно сложно реализуемы, но зато Паскаль-компилятор дает несравнимый выигрыш и по производительности компиляции и по предсказуемости поведения скомпилированного кода в ран-тайм


> inline процедуры


таких - полна котомка в system.pas, и этого вполне предостаточно для подавляющего большинства "нужд"


> конструкторы по умолчанию


> статические обьекты


да мало ли чего еще нет ! зато есть многое другое


 
Kurtevich   (2004-08-03 14:52) [73]


> Ну вот. Как всегда кривостьв  одном ищется в другом. И в
> фидо также. Еслия пишу криво, то надо переписать Дельфи
> нафик, полностью.

блин, ну причем тут что я криво пишу?... мне от этих "методов класса" или как вы их там называете ни холодно ни жарко в процессе программирования... блин, вы хоть думайте, что пишете! я ж ругаюсь не потому, что уменя что-то не работает! прочитайте все эти посты от начала, я ХОТЬ РАЗ сказал, что из-за нехорошей дельфи у меня прога не компилируется, БЛИН!!!??


 
Думкин ©   (2004-08-03 14:54) [74]

>  [73] Kurtevich   (03.08.04 14:52)

Я понимаю, и чел в фидо писал также. Но если проблем нет, то в чем они есть?


 
Kurtevich   (2004-08-03 14:55) [75]


> Паскаль-компилятор работает по однопроходной схеме, многие
> фичи иных языков в нем попросту нереализуемы

дык в данном случае это как раз фича ПАСКАЛЯ, которой НЕТ в других языках!


 
KSergey ©   (2004-08-03 14:57) [76]

Жаловался, что работает не так, как ожидал, а так, как ее скомпилировал поганый компилятор.

> конструкторы по умолчанию

А зачем они, если объякты всегда явно создаются в коде программы, в отличии от С++???

Вообще, надо понять важное отличие: в дельфи нет переменный-объектов. Есть только ссылки на объекты (читай - указатели).


 
Digitman ©   (2004-08-03 14:58) [77]


> Kurtevich   (03.08.04 14:55) [75]


> это как раз фича ПАСКАЛЯ


фича-то эта не на пустом месте растет !
фича эта накладывает определенные ограничения, которых не имеют некие иные языки и многопроходные компиляторы этих языков


 
Kurtevich   (2004-08-03 14:58) [78]


> Думкин ©   (03.08.04 14:54) [74]

я не чел в фидо, а если бы вы разобрались, о чем тут идет речь, то стало бы ясно: проблема всего-навсего в том, что я начал ругаться на дельфи за то, что она позволяет такую ФИЧУ, которую как типа-ООП-шная среда не должна бы позволять... и дело не в том, что от этого у меня винда глючит или кофе остывает, просто это... ну некрасиво, и всё тут! это все равно что трансвестит, когда ты думаешь что он девушка, а он на самом деле нет! :)


 
Anatoly Podgoretsky ©   (2004-08-03 15:00) [79]

Сказал, начиная с самого первого сообщения.

Типичный засланец.


 
Digitman ©   (2004-08-03 15:03) [80]


> позволяет такую ФИЧУ, которую как типа-ООП-шная среда не
> должна бы позволять


где ? где это регламентировано ? какими документами ?
твои собственные вокруг-да-около инсинуации - это не регламентирующий документ



Страницы: 1 2 3 4 5 вся ветка

Текущий архив: 2004.08.22;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.053 c
6-1086611446
TSa
2004-06-07 16:30
2004.08.22
Узнать логин с которым входили в систему ?


4-1089279091
DelphiNew
2004-07-08 13:31
2004.08.22
TreeView в чужом приложении


1-1091774181
kdy
2004-08-06 10:36
2004.08.22
Action Manager мешает наследовать формы?


14-1091561847
DeadMeat
2004-08-03 23:37
2004.08.22
1C


3-1091105940
Dysan
2004-07-29 16:59
2004.08.22
ADOQuery и DataSource - "Missing Connection or ConnectionString"