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