Главная страница
    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
2-1216785438
Zergost
2008-07-23 07:57
2008.08.31
Фильтрация по полям?


2-1216790670
vegarulez
2008-07-23 09:24
2008.08.31
Можно ли управлять вольтажом USB порта?


15-1215472450
Хохол
2008-07-08 03:14
2008.08.31
Система сообщений(философия)


10-1147542762
RUNaum
2006-05-13 21:52
2008.08.31
Как понять что ActiveX в "design-time"?


2-1216902939
Alex_C
2008-07-24 16:35
2008.08.31
Как правильно дождаться сбытия?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский