Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизWith Найти похожие ветки
← →
SergP © (2004-06-01 23:31) [0]with TStringlist.Create do
begin
...
//И вот тут мне понадобился указатель на созданый мной объект класса TStringList
aaa:= ??? // Как его получить?
...
end;
← →
Gero © (2004-06-01 23:33) [1]Никак. Без дополнительной переменной не обойтись.
← →
AlexG © (2004-06-01 23:34) [2]Ты хочешь указателю на объект что-то присвоить?
← →
Anatoly Podgoretsky © (2004-06-01 23:36) [3]Так примени локальную переменную, всего 4 байта совместно используемой памяти, стек. Всему свое назначение, данная конструкция для анонимного обращения, а ты хочешь явное.
← →
SergP © (2004-06-01 23:45) [4]Хм. Да там почти все анонимно нормально проходит. Но вот в одном месте ну не совсем как я написал, но нужно передать функции указатель на эту фигню.
ini.ReadSections(???);
Ну если нельзя, то нельзя... Просто надеялся что все-же можно каким-нить способом, которого я не знаю...
← →
Gero © (2004-06-01 23:49) [5]Если бы.
← →
default © (2004-06-02 00:38) [6]вынуть из EAX
полностью легально
пишут же в хелпе
"procedure CallDynamicMethod(e: TExample);
asm
// Save ESI register
PUSH ESI
// Instance pointer needs to be in EAX
MOV EAX, e
// DMT entry index needs to be in (E)SI
MOV ESI, DMTINDEX TExample.DynamicMethod
// Now call the method
CALL System.@CallDynaInst
// Restore ESI register
POP ESI
end;"
не изверги же в Borland-е чтобы давать примеры того как можно писать, а в следующих версиях обрубать указанные возможности
← →
evvcom © (2004-06-02 01:27) [7]
> Так примени локальную переменную, всего 4 байта совместно
> используемой памяти, стек.
Причем эти 4 байта компилятор все равно отводит в стеке, потому что не так уж и много регистров у процессора. И кроме того, лучше вообще как можно реже пользоваться конструкцией With. Она экономит текст, но заметно усложняет читабельность кода и его дальнейшую отладку.
← →
KilkennyCat © (2004-06-02 01:46) [8]
> evvcom © (02.06.04 01:27) [7]
Вот! Именно поэтому я его и не люблю - потом читаешь исходник, и начинаешь интерпретатором работать...
← →
MBo © (2004-06-02 08:03) [9]
type
TSimpleMethod = procedure of object;
function GetWithSelf(const pr: TSimpleMethod): TObject;
begin
Result := TMethod(pr).Data;
end;
with TStringList.Create do
try
CommaText := "1,2,3,4,5,6,7,8,9,0";
ShowText(TStringList(GetWithSelf(Free)));
finally
Free;
end;
(Статья Максима Кузьминского на Королевстве)
← →
Mim1 © (2004-06-02 08:57) [10]
> И кроме того, лучше вообще как можно реже пользоваться конструкцией
> With. Она экономит текст, но заметно усложняет читабельность
> кода и его дальнейшую отладку.
холивар по этому поводу был в потрепаться, и на кроролевстве. Все остались при своем.
← →
default © (2004-06-02 14:50) [11]MBo © (02.06.04 08:03) [9]
ну и это и так понятно, исх-ая задача правда немного другой была...
← →
Тимохов © (2004-06-02 14:53) [12]
> MBo © (02.06.04 08:03) [9]
оригинально, но мне кажется больше подходит как решение задачи для олимпиады :)))
АВТОРУ.
я бы через локальную переменную сделал.
← →
default © (2004-06-02 14:56) [13]Тимохов © (02.06.04 14:53) [12]
чего оригинального?дополн-ый код как никак...
← →
Тимохов © (2004-06-02 14:58) [14]
> default © (02.06.04 14:56) [13]
> Тимохов © (02.06.04 14:53) [12]
> чего оригинального?дополн-ый код как никак...
ну я же дальше написал в чем оригинальность - хорошее решение для олимпиадной задачи по дельфи.
в жизни, насерное, не очень применимое решение по обозначенным вами причинам.
← →
MBo © (2004-06-02 14:59) [15]>default © (02.06.04 14:50) [11]
Результат функции - как раз "указатель на созданый мной объект класса TStringList"
>Тимохов ©
Угу ;)
← →
default © (2004-06-02 15:00) [16]MBo © (02.06.04 14:59) [15]
понятно это...
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.053 c