Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при объявлении 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.011 c
2-1166577368
Алексей Филонович
2006-12-20 04:16
2007.01.07
форма


15-1166173759
pavel_guzhanov
2006-12-15 12:09
2007.01.07
От книг Архангельского есть польза!!! :0))


2-1166320824
КВАНТ
2006-12-17 05:00
2007.01.07
Про URL в RichEdit и про Panel (несовместимость?)


1-1163612724
Windows
2006-11-15 20:45
2007.01.07
Определить директорию запускаемого файла


2-1166517310
vitv
2006-12-19 11:35
2007.01.07
Создание круглой кнопки





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский