Форум: "Начинающим";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c