Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
8-1185237839
Дмитрий Белькевич
2007-07-24 04:43
2008.08.31
Сглаживание в терминальной сесии.


15-1215904582
Kostafey
2008-07-13 03:16
2008.08.31
С днем рождения ! 13 июля


2-1216889323
Коля-Коля
2008-07-24 12:48
2008.08.31
Зависание


3-1202463519
Prohodil Mimo
2008-02-08 12:38
2008.08.31
Можно ли определить таблицу и запись , которая не даёт удалить...


2-1216804295
Dimich1978
2008-07-23 13:11
2008.08.31
Как удалить из doc определеные строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский