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

Вниз

оператор With   Найти похожие ветки 

 
wild_arg   (2004-10-26 10:50) [0]

Как внутри оператора with получить ссылку на сам объект, по которому строим оператор?
Пример:
with TMyObject.Create do begin
...
 MyProc({здесь, типа, надо передать ссылку на созданный объект})
...
end;


 
Digitman ©   (2004-10-26 10:54) [1]

никак.

решение обычное :

MyObject := TMyObject.Create;
with MyObject do begin
...
MyProc(MyObject);
...
end;


 
Плохиш ©   (2004-10-26 10:54) [2]

Примерно весной это здесь уже обсуждалось :-)
Может быть кто-нибуть это для тебя и поищет.


 
Плохиш ©   (2004-10-26 10:57) [3]


> Digitman ©   (26.10.04 10:54) [1]

В том обсуждении был пример удаления гланд не через рот ;-) Люди же лёгких путей не ищут :-)


 
wild_arg   (2004-10-26 10:59) [4]

блин
заводить дополнительную переменную.... оцтой!
:)


 
Johnmen ©   (2004-10-26 11:01) [5]

Да весь программинг - полный оцтой.


 
Плохиш ©   (2004-10-26 11:02) [6]


> wild_arg   (26.10.04 10:59) [4]
> блин
> заводить дополнительную переменную.... оцтой!

Да! А во всех ошибках Билл Гейтц виноват


 
Gero ©   (2004-10-26 11:09) [7]

Даешь написание программ без переменных!


 
ssk ©   (2004-10-26 12:19) [8]

... и констант!


 
Digitman ©   (2004-10-26 12:32) [9]


> wild_arg   (26.10.04 10:59) [4]


тебе Плохиш ©   (26.10.04 10:57) [3] верно говорит - есть и иное решение - удаление гланд через причинное место ..

желаешь испытать ? объяви в своем классе TMyObject что-то вроде публ.метода GetInstance и реализуй его примерно так :

function TMyObject.GetInstance: TMyObject;
begin
Result := Self;
end;

тогда "хирургическая операция" сможет выглядеть тем самым образом, который ты столь жаждешь:

with TMyObject.Create do begin
...
MyProc(GetInstance)
...
end;

вопросы тебе "на засыпку" к рассуждениям во время викенда :
- чем тебе это грозит ?
- стоит ли "овчинка выделки" ?


 
КаПиБаРа ©   (2004-10-26 13:11) [10]

type
 TProc = procedure of object;

function GetSelf(Proc: TProc): TObject;
begin
 Result := TObject(TMethod(proc).Data);
end;

with TMyObject.Create do begin
...
MyProc(GetSelf(Free))
...
end;


 
SergP ©   (2004-10-26 14:39) [11]


>  [2] Плохиш ©   (26.10.04 10:54)
> Примерно весной это здесь уже обсуждалось :-)
> Может быть кто-нибуть это для тебя и поищет.


Ага... Я тогда спрашивал...
Но у меня была ситуация где в with был довольно большой код, и только в одном месте как назло требовалась ссылка (указатель) на сам объект...
Просто хотелось "красиво" написать код
Предложеные примеры были куда сложнее чем если бы я сделал все с дополнительной переменной.
Вобщем я тогда решил не мучаться и добавил переменную....


 
Alekc   (2004-10-27 00:19) [12]

with TMyObject.Create do begin
...
 MyProc(TMyObject(TMethod({@}Create).Data));
// Насчёт @ не уверен....
...
end;


 
Германн ©   (2004-10-27 04:10) [13]

2 Alekc   (27.10.04 00:19) [12]
Имхо, тут главное "Время жизни" ссылки и "Область видимости ссылки".


 
КаПиБаРа ©   (2004-10-27 05:52) [14]

SergP ©   (26.10.04 14:39) [11]
Предложеные примеры были куда сложнее чем если бы


Что сложного в КаПиБаРа ©   (26.10.04 13:11) [10]? Или такого примера не предлагали?


 
Ученик   (2004-10-27 08:13) [15]

type
 TClassTypeMethod = function: TClass of object;

function GetSelf(aClassType: TClassTypeMethod): Pointer;
begin
 Result := TMethod(aClassType).Data
end;

with TMyObject.Create do begin
 ...
 MyProc(GetSelf(ClassType));
 ...
end;


 
Ученик   (2004-10-27 08:15) [16]

Сорри :-) КаПиБаРа ©   (26.10.04 13:11) [10]


 
КаПиБаРа ©   (2004-10-27 08:16) [17]

Ученик   (27.10.04 8:15) [16]
Похоже одни книжки читаем :)


 
SergP ©   (2004-10-27 09:00) [18]


> [14] КаПиБаРа ©   (27.10.04 05:52)
> SergP ©   (26.10.04 14:39) [11]
> Предложеные примеры были куда сложнее чем если бы
>
> Что сложного в КаПиБаРа ©   (26.10.04 13:11) [10]? Или такого
> примера не предлагали?


Вроде бы не предлагали... хотя дело не в этом.
Дело в том что я не говорил что что-то сложно,
я говорил что что-то одно сложнее чем другое.
Т.е. речь шла не об абсолютной сложности а об относительной.

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


 
SergP ©   (2004-10-27 09:06) [19]


> [14] КаПиБаРа ©   (27.10.04 05:52)
> SergP ©   (26.10.04 14:39) [11]
> Предложеные примеры были куда сложнее чем если бы
>
> Что сложного в КаПиБаРа ©   (26.10.04 13:11) [10]? Или такого
> примера не предлагали?


Вроде бы не предлагали... хотя дело не в этом.
Дело в том что я не говорил что что-то сложно,
я говорил что что-то одно сложнее чем другое.
Т.е. речь шла не об абсолютной сложности а об относительной.

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



Страницы: 1 вся ветка

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

Наверх




Память: 0.51 MB
Время: 0.039 c
1-1098434425
ALex 67
2004-10-22 12:40
2004.11.07
Проблема с графикой


4-1096620777
thoth
2004-10-01 12:52
2004.11.07
что не так?


14-1098179861
Vasya.ru
2004-10-19 13:57
2004.11.07
Численное исследование алгоритмов построения равномерно распредел


1-1098742630
saNat
2004-10-26 02:17
2004.11.07
Прокрутка в Мемо


4-1096445161
AlexXn
2004-09-29 12:06
2004.11.07
Удаление MUTEX