Съдържание

# Функция CallByName

Извиква подпрограма по името ѝ като низ.

### Синтаксис:

      CallByName(object As Object, ProcName As String, CallType As Integer [,arg0 [,arg1 …]])

### Тип на резултата:

result: незадължителна променлива, която съдържа резултата от извикания метод или свойство.

### Параметри:

object: модул на Basic, екземпляр на ClassModule или услуга на UNO, която съдържа свойства или методи.

ProcName: извикваната подпрограма от тип Function, Sub или Property.

CallType: типът на извършваното действие, например Get, Let, Method и Set.

arg0, arg1 …: незадължителните параметри на подпрограмата от тип Function, дадени като позиционни аргументи.

Аргументите се подават в точно същия ред, в който са дефинирани в сигнатурата на метода. Не са възможни аргументи с ключови думи.

Стойност | Описание на стойността от тип CallType
--- | ---
1 | Method: извикване на подпрограма като функция или процедура.
2 | Get: четене на съдържанието на свойство или променлива.
4 | Let: присвояване на съдържание на свойство (Property) или променлива.
8 | Set: присвояване на стойност псевдоним на променлива от тип Object или Variant.

### Пример:

1. Модулът Calc.Maths съдържа функция Multiply, която очаква вариращ списък от числа.

2. Извлича се информация от свойството ScriptForge.Platform.Architecture.

3. На свойството DisplayDirectory на услугата на UNO com.sun.star.ui.dialogs.FilePicker се задава началната папка на потребителя, съдържанието му се чете два пъти.

      Sub CallByName_example
          Const _Method = 1, _Get = 2, _Let = 4, _Set = 8

          BasicLibraries.loadLibrary("Calc") ' Calc.Maths потребителска библиотека.модул
          Dim cm As Object : cm = Calc.Maths
          MsgBox CallByName(cm, "Multiply", _Method, 3, 45, 1, 89)		' 12015
          MsgBox CallByName(cm, "Multiply", _Method, 1.85e15, 44, 10^8)	' 8.14E+24

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
          Dim p As Object : p = CreateScriptService("ScriptForge.Platform")
          MsgBox CallByName(p, "Architecture", _Get) ' 32bit/64bit

          Dim uno As Object : uno = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker")
          Dim fs As Object  : fs  = CreateScriptService("ScriptForge.FileSystem")
          CallByName(uno, "DisplayDirectory", _Let, fs.HomeFolder)
          MsgBox CallByName(uno, "DisplayDirectory", _Get)
          var = CallByName(uno, "getDisplayDirectory", _Get)
      End Sub

### Модул Calc.Maths

      Option Compatible ' Модул Calc.Maths
      Option Explicit

      Public Function Multiply(ParamArray args() As Double) As Variant
          ''' Произведение на вариращ списък от числа '''
          Dim ndx As Integer
          If UBound(args) >= 0 Then
              Multiply = 1.0
              For ndx = 0 To UBound(args)
                  Multiply = Multiply * args(ndx)
              Next ndx
          End If
      End Function 'Calc.Maths.Multiply()

Теми, свързани с показаната

Оператор Call

ScriptForge.Platform service

Оператор Option Compatible

Оператор Option ClassModule