Форум: "Потрепаться";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Вниз
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;
Скачать: [xml.tar.bz2];
Память: 0.62 MB
Время: 0.062 c