Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.07;
Скачать: CL | DM;

Вниз

Ошибка при объявлении property .   Найти похожие ветки 

 
misyachniy ©   (2006-04-28 15:41) [0]

Объявил  property и две функции работы с ним:

public
function SetSizeBuffer(S:integer):boolean;
function GetSizeBuffer:integer;
property sBuffer: Integer read GetSizeBuffer write SetSizeBuffer;

Функция SetSizeBuffer возвращает true в случаее успешного завершения.

function tBuffer.SetSizeBuffer(S:integer):boolean;
begin
try
SetLength(Buffer,S);
except
 on EOutOfMemory do
  begin
   result:=false;
   exit;
  end;
end;
sBuffer:=S;
result:=true;
end;

При компиляции получаю ошибку
[Error] Buffers.pas(21): Incompatible types - именно на эту функцию.

Кто виноват, что делать?
Спасибо.


 
Юрий Зотов ©   (2006-04-28 15:53) [1]

1. SetLength(Buffer,S) -  а что такое Buffer? Похоже, что причина ошибки в этом и есть.

2. Зачем методы доступа к свойству объявлять в public, если само свойство уже объявлено там же?

3. Подозреваю, что метод GetSizeBuffer не нужен, его вполне можно заменить прямым доступом к полю.

4. Строка sBuffer:=S даст рекурсию.


 
misyachniy ©   (2006-04-28 16:16) [2]

Компилятору не нравится именно объявление property:

property sBuffer: Integer read GetSizeBuffer write SetSizeBuffer;


буфер объявлен как массив байт;

Buffer:array of byte;


 
Яся   (2006-04-28 16:32) [3]

In a write specifier, if fieldOrMethod is a method, it must be a procedure that takes a single value or const
parameter of the same type as the property.


 
misyachniy ©   (2006-04-28 17:52) [4]

Странно.
У меня в книжке Рея Конопки "Создание оригинальных компонент в среде Delphi" на странице 53 в примере

procedure SetShelfLabels(Index:integer; const Value:string);

То есть передаются два параметра.
Ну ладно спрячу переменную, и объявлю функции как мне нужно.


 
MBo ©   (2006-04-28 18:04) [5]

>То есть передаются два параметра.
Это для индексированных свойств (с синтаксисом массивов)


 
evvcom ©   (2006-05-02 09:05) [6]


> function SetSizeBuffer(S:integer):boolean;

procedure SetSizeBuffer(S:integer);



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

Текущий архив: 2007.01.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
1-1163631518
gosha73
2006-11-16 01:58
2007.01.07
Преобразование Untyped, что посоветуете?


15-1166199148
Kerk
2006-12-15 19:12
2007.01.07
САМЫЙ РЕЗУЛЬТАТИВНЫЙ В ИСТОРИИ МАТЧ


2-1166205215
Tupoy
2006-12-15 20:53
2007.01.07
OnKeyPres. подскажите пример


2-1166371023
Com
2006-12-17 18:57
2007.01.07
dll


2-1166436237
cvg
2006-12-18 13:03
2007.01.07
Есть ли в Delphi что-то типа is_number?