Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
-92 / 302 / 4
Регистрация: 02.04.2009
Сообщений: 971

Как присвоить function of object?

23.09.2015, 18:51. Показов 2258. Ответов 2
Метки нет (Все метки)

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

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

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.09.2015, 18:51
Ответы с готовыми решениями:

FUN must be a function, a valid string expression, or an inline function object
Здраствуйте, нужна помощь. clear all; close all; Scr_data_C; Scr_data_L; fv = 10:10:10000; Zc = cond(dataC,fv); Zl =...

Define a function that accepts an object and returns an array containing the values of that object.
Что я делаю не так? Define a function named values that has the following parameter: dict - an object Return an array...

Как исправить Fatal error: Call to a member function fetch_assoc() on a non-object
Fatal error: Call to a member function fetch_assoc() on a non-object in ... on line 25 <?php $mysqli = false; function...

2
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
23.09.2015, 20:28
TGetPathByName = Function(Name: AnsiString): AnsiString of object;
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33402 / 21512 / 8236
Регистрация: 22.10.2011
Сообщений: 36,912
Записей в блоге: 12
23.09.2015, 20:33
Delphi
1
2
type
    TGetPathByName = Function(Name: AnsiString): AnsiString of object; // Костыль для вызова
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2015, 20:33
Помогаю со студенческими работами здесь

Подскажите, как правильно работать с PDO / mysqli или Call to a member function query() on a non-object
Начинаю понемногу обучаться ООП. Ну раз ООП - так ООП и я решил попробовать объектно-ориентированный подход в работе с базами данных....

object is not a function
Ругается ошибкой "object is not a function" на такой код: function sendFormMailToUser(mail,text,security,id) { var req=new...

Call to a member function on a non-object
Есть такой код $conn = new mysqli($hn, $un, $pw, $db); function send_query($conn, $query) { $result = $conn->query($query); ...

AttributeError: 'function' object has no attribute
class player: def resources(self): credits = 22200 print(player.resources.credits) Вывод: Traceback (most recent...

Ошибка 'function' object has no attribute 'id'
Добрый вечер. Пытаюсь выполнить лабораторные работы по методичке, однако либо что-то упустил, либо в методичке косяк. По заданию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru