Главная страница
    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.45 MB
Время: 0.01 c
11-1142986047
phant
2006-03-22 03:07
2007.01.07
Как в KOL сменить цвет выделенного эл. LIstBox а?


2-1166363079
MaXie
2006-12-17 16:44
2007.01.07
Загадки Delphi


2-1166169199
KyRo
2006-12-15 10:53
2007.01.07
Как сделать на компонент полупрозрачным


1-1163765000
laronov
2006-11-17 15:03
2007.01.07
выделение в ComboBox


10-1127743909
yanker
2005-09-26 18:11
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский