Текущий архив: 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.45 MB
Время: 0.01 c