Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Вниз

В чем разница? : M2 := TMemo(M1) и M2 := (M1 as TMemo)?   Найти похожие ветки 

 
@Ujin   (2003-07-17 15:12) [0]

Если можно попопулярней! Заранее спосибо!


 
AGAMEMNUM   (2003-07-17 15:16) [1]

а что тут непонятного? в перв случае создаешь еще одно мемо, по образу и подобию, во втором получаешь ссылку на то же мемо...


 
Skier   (2003-07-17 15:18) [2]

>@Ujin © (17.07.03 15:12)
M2 := TMemo(M1) быстрее чем M2 := (M1 as TMemo) , поскольку
as производит проверку на допустимость кастинга, за
TMemo(M1) отвечает сам программист, поэтому обычно пишут
так :

if M1 is TMemo then begin
with TMemo(M1) begin //не as поскольку на TMemo уже проверено
//.......
end; //with
end;


 
Palladin   (2003-07-17 15:20) [3]

хихи...


 
@Ujin   (2003-07-17 15:24) [4]

Так, вот что странно:
делаю так:

Libs.AddObject("Идентефикатор", TLib.Init(<Имя файла>));
При таком обращении: (Libs.Objects[i] as TLib) - ОШИБКА,
а при таком: TLib(Libs.Objects[i][i]) все в порядке!

В чем тут беда?


 
Palladin   (2003-07-17 15:27) [5]

а какая ошибка ?
а может (Libs.Objects[i][i] as TLib) тогда ?


 
@Ujin   (2003-07-17 15:29) [6]

Не, там массива нет.
А ошибка RunTime 216


 
Skier   (2003-07-17 15:30) [7]

>@Ujin
Я бы ответил так : ошибка видимо совсем не в приведении типов !


 
Palladin   (2003-07-17 15:32) [8]

AV...
код обращения приведи, реальный


 
@Ujin   (2003-07-17 15:34) [9]

function LibByName(const ALibName: string): TLib;
var idx: integer;
begin
idx := Libs.IndexOf(ALibName);
if idx <> -1 then Result := /b(Libs.Objects[idx] as TLib)
else Result := nil;
end;


 
@Ujin   (2003-07-17 15:35) [10]

/b - тытался делать жирным :)


 
Skier   (2003-07-17 15:36) [11]

>@Ujin
А чему у тебя равен Libs.Objects[idx] ?
Не nil случаем ?


 
Palladin   (2003-07-17 15:38) [12]

а ошибку выдает в каком случае?
код вызова функции тоже приведи...


 
@Ujin   (2003-07-17 15:39) [13]

procedure TryToUnloadAll;
var i: integer;
begin
i := 0;
while i < Libs.Count do begin
if LibRefCount(Libs[i]) = 0 then
TryToUnloadLib(Libs[i])
else kError;
inc(i);
end;
Unloader.Suspend;
end;


 
@Ujin   (2003-07-17 15:40) [14]

Сори...

function TryToUnloadLib(const ALibName: string): boolean;
begin
Result := false;
if LibRefCount(ALibName) = 0 then begin
with LibByName(ALibName) do try
if Active then Result := Unload;
except
kError("?????? ??? ???????? ??????????: ""+ALibName+""");
end;
end;
end;


 
Palladin   (2003-07-17 15:43) [15]

вот верхняя процедура интересна
попробуй
for i:=Libs.Count-1 downto 0 do
if LibRefCount(Libs[i]) = 0 then TryToUnloadLib(Libs[i])
else kError;


 
Palladin   (2003-07-17 15:45) [16]

и я так понимаю это у тебя многопоточность...
ты безопасность работы с общими ресурсами соблюдаешь надеюсь?


 
@Ujin   (2003-07-17 15:46) [17]

Есть казусы с Unloader = TThread. Я бы именно так и сделал...


 
@Ujin   (2003-07-17 15:47) [18]

Как правила дорожного движения! :)


 
@Ujin   (2003-07-17 15:49) [19]

Всем спосибо за участие - деньги заканчиваются!


 
Palladin   (2003-07-17 15:51) [20]

ну тогда у тебя какой то из Objects в списке есть nil...
трассируй содержимое...



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

Форум: "Основная";
Текущий архив: 2003.07.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
1-100696
Endi
2003-07-16 08:11
2003.07.31
Пересылка сообщений


1-100712
begin...end
2003-07-18 15:26
2003.07.31
Почему не завершается цикл?


1-100778
Bosh
2003-07-16 02:29
2003.07.31
странный обход каталогов


14-100911
Spa81
2003-07-14 18:18
2003.07.31
TurboPower Async Professional


1-100666
Far
2003-07-17 11:29
2003.07.31
Unit





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