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

Вниз

Self будет на кого указывать   Найти похожие ветки 

 
Dennis I. Komarov ©   (2008-07-22 13:52) [0]

procedure TFormAny.Bla-bla...
var
Log: TIdLogFile;
...

...
with TIdFTP.Create(nil) do try
...
Log:=TIdLogFile.Create(Self);
...
Intercept:=Log;
...

1. Self будет на экpемпляh TIdFTP или TFormAny
2. Если на TIdFTP то память от Log чистить не надо ибо при (FTP) Free он сам должен. Прав ли я тут?
3. Как лучше написать код (хотелось Log не объявлять)


 
Palladin ©   (2008-07-22 13:52) [1]

на TFormAny


 
Dennis I. Komarov ©   (2008-07-22 13:53) [2]

:(


 
Dennis I. Komarov ©   (2008-07-22 13:53) [3]

Тогда (3) :)


 
Правильный$Вася   (2008-07-22 13:56) [4]

Intercept:=TIdLogFile.Create(Self);


 
Palladin ©   (2008-07-22 13:58) [5]


> 3. Как лучше написать код (хотелось Log не объявлять)

:) ну можно с финтом

with TIdFTP.Create(Self) do try
name:="blabla"+_UID;
Log:=TIdLogFile.Create(Self.FindComponent("blabla"+_UID));
...
Intercept:=Log;


 
Palladin ©   (2008-07-22 13:59) [6]

упс

with TIdFTP.Create(Self) do try
 name:="blabla"+_UID;
 Intercept:=TIdLogFile.Create(Self.FindComponent("blabla"+_UID));


 
Palladin ©   (2008-07-22 14:06) [7]

и даже еще проще

with TIdFTP.Create(Self) do try
 name:="blabla"+_UID;
 Intercept:=TIdLogFile.Create(Self.FindComponent(Name));


 
Dennis I. Komarov ©   (2008-07-22 14:07) [8]

Ложка дегтя :)
 Self-a нет.


 
Palladin ©   (2008-07-22 14:15) [9]

значит придется заводить переменную


 
Palladin ©   (2008-07-22 14:17) [10]

хотя можно конечно и так выкрутиться

Type
TFreeProc=Procedure of Object;
Var
p:TFreeProc;

with TIdFTP.Create(Self) do try
p:=Free;
Intercept:=TIdLogFile.Create(TComponent(TMethod(p).Data));


но переменную завести все равно придется


 
Anatoly Podgoretsky ©   (2008-07-22 14:25) [11]


> Self будет на экpемпляh TIdFTP или TFormAny

А это одна процедура или несколько.


 
Dennis I. Komarov ©   (2008-07-22 14:28) [12]

with TIdFTP.Create(Self) do try
 name:="blabla"+_UID;
 Intercept:=TIdLogFile.Create(Self.FindComponent(Name));
finally
 Free; // Тут экземпляр TIdLogFile "умрет"?
end;


 
Palladin ©   (2008-07-22 14:28) [13]

конечно


 
Dennis I. Komarov ©   (2008-07-22 14:30) [14]

> [11] Anatoly Podgoretsky ©   (22.07.08 14:25)

одна, но там уже проехали :) хотелось просто отловить указатель который внутри WITH


 
Dennis I. Komarov ©   (2008-07-22 14:30) [15]

> [13] Palladin ©   (22.07.08 14:28)

это я на всякий пожарный :)


 
Dennis I. Komarov ©   (2008-07-22 14:51) [16]

Результат (если вдруг...)

FTP:=TIdFTP.Create(Self);
with FTP do try
 .....
 Intercept:=TIdLogFile.Create(FTP);
 with TIdLogFile(Intercept) do begin
   FileName:="...";
   Activate:=true;
 end;
.....
.....
.....
finally
 Free;
end;


З.Ы. Люблю красивый код. Всем Спасибо!


 
Сергей М. ©   (2008-07-22 20:37) [17]


> Dennis I. Komarov


Видишь ли, код, использующий with, - он, конечно, строг и изящен, но .. для пошаговой трассировки при отладке крайне неудобен ..


 
Медвежонок Пятачок ©   (2008-07-23 12:06) [18]

TIdLogFileWithSelf = class(TIdLogFile)
public
 property HimSelf : TIdLogFile read : GetHimSelf;
end;



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

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

Наверх




Память: 0.5 MB
Время: 0.009 c
15-1215742935
Slider007
2008-07-11 06:22
2008.08.31
С днем рождения ! 11 июля 2008 пятница


1-1197552021
Zheksik
2007-12-13 16:20
2008.08.31
запретить вывод на консоль


15-1215681548
DRG
2008-07-10 13:19
2008.08.31
Книга по С++ для знающего Delphi


15-1215890922
Zeqfreed
2008-07-12 23:28
2008.08.31
В ICFP никто не участвует?


8-1184936230
DmitriyZ
2007-07-20 16:57
2008.08.31
Как в Delphi сгенерировать звук произвольной частоты и вывести ег