Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
3-1091033942
Junior
2004-07-28 20:59
2004.08.22
Проблема с отчетами! Мастера помогите!


4-1089283866
andrey__
2004-07-08 14:51
2004.08.22
Как принять сообщение в TServiceApplication посланное другим прил


1-1091884040
XfroSt
2004-08-07 17:07
2004.08.22
Как скопировать содержимое DBGrid в StringGrid ?


9-1083642760
lokid7
2004-05-04 07:52
2004.08.22
Расчет положения объекта на карте.


14-1091201800
Igor_thief
2004-07-30 19:36
2004.08.22
Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский