Περιεχόμενα

# Συνάρτηση CallByName

Καλεί μια υπορουτίνα με το όνομα της συμβολοσειράς της.

### Σύνταξη:

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

### Επιστρεφόμενη τιμή:

αποτέλεσμα (result): Μια προαιρετική μεταβλητή που περιέχει το αποτέλεσμα της καλούμενης μεθόδου ή ιδιότητας.

### Παράμετροι:

αντικείμενο (object): Μια λειτουργική μονάδα Basic, στιγμιότυπο ClassModule ή ιδιότητες ή μέθοδοι διατήρησης υπηρεσίας UNO.

ProcName: Η Function, Sub ή Property που καλείται.

Τύπος κλήσης (Τύπος κλήσης): Ο τύπος της ενέργειας που εκτελείται όπως 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 user library.module
          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

Πρόταση συμβατής επιλογής

Πρόταση επιλογής ClassModule