当前位置: 首页 > 知识库问答 >
问题:

在“基本”OpenOffice编程中传递数组

艾鹭洋
2023-03-14
Function test ( ByVal changeFrom() As String ,ByVal changeTo() As String  )
Dim I As Long
Dim Doc As Object
Dim Replace As Object

Doc = ThisComponent

Replace = Doc.createReplaceDescriptor
For I = 0 To 2
  Replace.SearchString = changeFrom(I) //Error is here
  Replace.ReplaceString = changeTo(I)
  Doc.replaceAll(Replace)
Next I
End Function


REM  *****  BASIC  *****
Sub main
Dim changeFrom(3) As String
Dim changeTo(3) As String


changeFrom() = Array("<word2>", "<word3>", "<word1>")
changeTo() = Array("value1", "value2", "value3")
test( changeFrom , changeTo)
End Sub

谢谢!

共有1个答案

贝洲
2023-03-14

基本函数ARRAY()返回一个包含数组的变量。所以如果你使用函数数组,你必须用变体拨号:

Function test ( ByVal changeFrom As Variant ,ByVal changeTo As Variant  )
Dim I As Long
Dim Doc As Object
Dim Replace As Object

Doc = ThisComponent

Replace = Doc.createReplaceDescriptor
For I = lbound(changefrom) To ubound(changefrom)
  Replace.SearchString = changeFrom(I) 'Error is here
  Replace.ReplaceString = changeTo(I)
  Doc.replaceAll(Replace)
Next I
End Function


REM  *****  BASIC  *****
Sub main
Dim changeFrom As variant
Dim changeTo As variant

changeFrom = Array("<word2>", "<word3>", "<word1>")
changeTo = Array("value1", "value2", "value3")
test( changeFrom , changeTo)
End Sub

或者如果不使用函数数组,可以使用String()数组:

Function test1 ( ByVal changeFrom() As String ,ByVal changeTo() As String  )
Dim I As Long
Dim Doc As Object
Dim Replace As Object

Doc = ThisComponent

Replace = Doc.createReplaceDescriptor
For I = lbound(changefrom) To ubound(changefrom)
  Replace.SearchString = changeFrom(I)
  Replace.ReplaceString = changeTo(I)
  Doc.replaceAll(Replace)
Next I
End Function


REM  *****  BASIC  *****
Sub main1
Dim changeFrom(2) As String
Dim changeTo(2) As String

changeFrom(0) = "<word2>"
changeFrom(1) = "<word3>"
changeFrom(2) = "<word1>"

changeTo(0) = "value1"
changeTo(1) = "value2"
changeTo(2) = "value3"

test1( changeFrom , changeTo)
End Sub

问候语

 类似资料:
  • 我是Java的新手,正在尝试制作一个基本的体质量计算器。我的问题是我需要问问题,转换度量值,然后将它传递给另一个方法,然后在一个单独的方法中显示结果。我在下面添加了代码,但每次都返回一个1.0作为答案。 更新的代码,现在正在获取;输入体重(磅):180输入身高(英寸):68计算出的体重指数为:1.1415618118905313 E-5建立成功(总时间:3秒)

  • pthread_create pthread_exit pthread_join

  • 为了回收资源,主线程会等待子线程结束。该函数就是用来等待线程终止的。类似与进程中的wait函数。 此函数将阻塞调用当前线程的进程,直到此线程退出。 函数原型 #include <pthread.h> int pthread_join(pthread_t thread, void **retval); 参数 thread 被等待线程的ID retval 如果此值非NULL,pthread_join复

  • 结束一个线程 函数原型 #include <pthread.h> void pthread_exit(void *retval); 参数 retval用来保存线程退出状态 返回值 为空。因为该函数永远成功。

  • 在调用这个函数的进程中创建一个新的线程 函数原型 #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 参数 thread 属于结果参数。函数结束时,返

  • 我知道我不能用这样的方式传递数组。我是否需要通过引用,如果是,如何?问题在下面供参考。 编写一个名为MethodsArrays的Java程序,它有4个静态方法,分别为fillArray()、sumArray()、avgArray()和printArray()。应该从main方法调用fillArray()方法。fillArray()方法应该使用一个扫描程序来接受一个表示数组长度的数字,然后读取数字来