Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как присвоить function of object 
V
    Опции темы
Rasool
Дата 23.9.2015, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 4.6.2011

Репутация: нет
Всего: нет



У меня стоит задача в модуле Bazir.pas получить строку PRGFiles.GetPathByName(cbSifr.Items[cbSifr.ItemIndex]) из модуля SimpleStart.
Для этого я сделал в модуле Bazir.pas костыли 
TGetPathByName = Function: AnsiString of object;
aGetPathByName: TGetPathByName;
aCbSifr: TAdvComboBox; // Костыль для вызова

Согласно примеру из http://www.delphisources.ru/pages/faq/faq_...Object.php.html написал строку 
aGetPathByName := PRGFiles.GetPathByName;
Эта строка при компиляции выдает ошибку 
[DCC Error] SimpleStart.pas(417): E2009 Incompatible types: 'Parameter lists differ'
Хотя в примере дано: nameFunc := simple.GetName;
Почему так?

Код

unit SimpleStart;
 
interface
 
uses
    AdvCombo, Bazir;
 
type
    TfrmSimpleStart = class(TForm)
        cbSifr: TAdvComboBox;
        procedure FormCreate(Sender: TObject);
 
    TMegaList = class(TList)
        Function GetPathByName(Name: AnsiString): AnsiString;
        Function GetNameByPath(Path: AnsiString): AnsiString;
    end;
 
var
    frmSimpleStart: TfrmSimpleStart;
    PRGFiles: TMegaList;
 
implementation
 
{$R *.dfm}
 
procedure TfrmSimpleStart.FormCreate(Sender: TObject);
begin
    PRGFiles := TMegaList.Create;
    aGetPathByName := PRGFiles.GetPathByName;
    aCbSifr := cbSifr;
end;
 
function TMegaList.GetPathByName(Name: AnsiString): AnsiString;
var
    i: Integer;
begin
    GetPathByName := '';
    for i := 0 to Self.Count - 1 do
        if TPRGFile(Self.Items[i]).NameToDisplay = Name then
        begin
            GetPathByName := TPRGFile(Self.Items[i]).FullPathToPRG;
            Exit;
        end;
end;
 
end.


Код

unit Bazir;
 
interface
 
uses AdvCombo;
 
type
    TGetPathByName = Function: AnsiString of object; // Костыль для вызова
    // процедуры GetPathByName из класса TMegaList
 
var
    frmBazir: TfrmBazir;
    aGetPathByName: TGetPathByName;
    aCbSifr: TAdvComboBox; // Костыль для вызова
 
implementation
 
{$R *.dfm}
 
procedure TfrmBazir.FormCreate(Sender: TObject);
begin
    Label91.Caption := aGetPathByName(aCbSifr.Items[aCbSifr.ItemIndex]);
end;
 
end.

PM MAIL   Вверх
Romikgy
Дата 24.9.2015, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



Цитата(Rasool @  23.9.2015,  18:02 Найти цитируемый пост)
PRGFiles.GetPathByName(cbSifr.Items[cbSifr.ItemIndex]) 

ф-кция принимает параметр 
Цитата(Rasool @  23.9.2015,  18:02 Найти цитируемый пост)
Function: AnsiString of object;

эта без параметров.... 
Код

Function (Path: AnsiString): AnsiString of object;


Это сообщение отредактировал(а) Romikgy - 24.9.2015, 09:15


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Rasool
Дата 28.9.2015, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 4.6.2011

Репутация: нет
Всего: нет



Спасибо, заработало.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0592 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.