Главная страница
    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.042 c
15-1232104188
Артур Пирожков
2009-01-16 14:09
2009.03.29
Музыка. Много. Где скачать?


11-1198575794
vastani
2007-12-25 12:43
2009.03.29
Прошу учесть и исправить ошибку в компоненте KOLHTTPDownload


6-1201359995
Nucer
2008-01-26 18:06
2009.03.29
SOMAXCONN


15-1232463158
Dimka Maslov
2009-01-20 17:52
2009.03.29
Логические операции


3-1216925004
Val
2008-07-24 22:43
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский