Форум: "Начинающим";
Текущий архив: 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.087 c