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

Вниз

наследник TObjectList   Найти похожие ветки 

 
Iriss   (2009-02-10 10:26) [0]

Есть тип TContainerPump - наследник от TObjectList

type TContainerPump = class(TObjectList)

   public constructor Create;

   public function Add    (APump: TPump): Integer;
   public function Remove (APump: TPump): Integer;
   public function IndexOf(APump: TPump): Integer;

   public function First : TPump;
   public function Last  : TPump;

   public procedure Sort(Compare: TListSortCompare);

   private function  GetItem(Index: Integer): TPump;
   private procedure SetItem(Index: Integer; APump: TPump);
   public  property Items[Index: Integer]: TPump read GetItem write SetItem; default;

end;


хочу отсортировать список
var ContainerPumps: TContainerPump;

   ContainerPumps.Sort( compareByMaxPower );


где

function TPumpsOptimal.compareByMaxPower(Pump1, Pump2: TPump) : Integer;
begin
   if ( Pump1.MaxPower > Pump2.MaxPower )
   then Result := 1
   else begin

       if Pump1.MaxPower = Pump2.MaxPower
       then Result := 0
       else Result := -1;

   end;
end;


выдает ошибку
несоответствие типов: regular procedure and method pointer

понимаю, что
TListSortCompare = function (Item1, Item2: Pointer): Integer;

у меня Item типа TPump, но не понимаю как исправить ошибку.

Подскажите, please


 
Сергей М. ©   (2009-02-10 10:31) [1]


> у меня Item типа TPump, но не понимаю как исправить ошибку


Это не имеет ни малейшего отношения к наблюдаемой тобой ошибке.


> несоответствие типов: regular procedure and method pointer


Метод Sort требует параметром адрес регулярной процедуры, а ты пытаешься скормить ему адрес метода класса.


 
Iriss   (2009-02-10 10:38) [2]

делал все вроде бы так же как здесь
http://www.delphisources.ru/pages/faq/faq_delphi_basics/TList.php.html

Просветите темного:

> адрес регулярной процедуры
что такое регулярная процедура?


 
Сергей М. ©   (2009-02-10 10:42) [3]


> Iriss   (10.02.09 10:38) [2]


> делал все вроде бы так же как здесь


Ну где же так же ?

Сравни оригинал

function compareByName(Item1 : Pointer; Item2 : Pointer) : Integer;

и своё

function TPumpsOptimal.compareByMaxPower(Pump1, Pump2: TPump) : Integer;

В чем главное отличие ?


 
Плохиш ©   (2009-02-10 10:44) [4]


> Iriss   (10.02.09 10:38) [2]
> > адрес регулярной процедуры
> что такое регулярная процедура?

Это обычная процедура, описанная в документации по языку паскаль, не являющаяся методом какого-либо класса. Пример, readln.

PS. А тебе, вообще-то, функцию надо.


 
Iriss   (2009-02-10 10:55) [5]

разобрался, спасибо большое


 
Anatoly Podgoretsky ©   (2009-02-10 11:08) [6]

> Iriss  (10.02.2009 10:38:02)  [2]

Врешь!

У тебя
function TPumpsOptimal.compareByMaxPower(Pump1, Pump2: TPump) : Integer;

а в примере
function compareByName(Item1 : Pointer; Item2 : Pointer) : Integer;



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

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

Наверх




Память: 0.46 MB
Время: 0.085 c
4-1207322584
engine
2008-04-04 19:23
2009.03.29
TerminateProcess


15-1232421567
Slider007
2009-01-20 06:19
2009.03.29
С днем рождения ! 20 января 2009 вторник


15-1232607529
XentaAbsenta
2009-01-22 09:58
2009.03.29
Получить уведомление о всовывании флешки.


6-1200509623
Gbp
2008-01-16 21:53
2009.03.29
Как реализовать поддержку SSL в прокси-сервере?


1-1207901857
IGray
2008-04-11 12:17
2009.03.29
Посоветуйте средство локализации интерфейса, плиииз!





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