Главная страница
    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.048 c
15-1232814370
saNat
2009-01-24 19:26
2009.03.29
Не работает политика разрешения установки программ пользователям


2-1234175488
TTLr
2009-02-09 13:31
2009.03.29
Сортировка данных по 2-м полям


2-1233220237
workbench
2009-01-29 12:10
2009.03.29
активизация окна


15-1232442288
123-ий
2009-01-20 12:04
2009.03.29
Delphi + PostgreSQL 8.3


15-1232476490
Putnik
2009-01-20 21:34
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский