Salve a tutti,
ho da poco intrapreso la programmazione per cercare di dare un piccolo contributo al miglioramento di opeoffice.
Ho creato delle macro in basic per cominciare a familiarizzare con il linguaggio.
Il mio problema e' nel passaggio di parametri in una procedura/funzione, alle volte funziona alle volte non; non capisco.
posto una semplice macro :
Dim Doc,Sheet As Object
Dim inputs As String
Dim stringa,stringa1,stringa2 As String
Dim Trovato As Boolean
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(3, 3)
inputs=cell.string
scorpora(inputs,stringa,stringa1,stringa2,trovato)
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(0, 0)
Cell.String =stringa
Cell = Sheet.getCellByPosition(0, 1)
Cell.String =stringa1
Cell = Sheet.getCellByPosition(0, 2)
Cell.String =stringa2
Cell = Sheet.getCellByPosition(0, 3)
Cell.String =trovato
End Sub
Sub scorpora(ByVal funz As String, str As String, str1 As String, str2 As String, trov As Boolean)
Dim flag,flag1 As String
Dim posiz,conta,inizio As Integer
flag = funz
flag1=mid(flag,2,2)
if (flag1="ma" ) or (flag1="ma") then
trov=true
posiz=4
flag1=mid(flag,posiz,1)
Do While flag1<>":"
posiz=posiz+1
flag1=mid(flag,posiz,1)
Loop
string=mid(flag,4,posiz-4)
conta=0
posiz=posiz+1
inizio=posiz
flag1=mid(flag,posiz,1)
Do While flag1<>":"
posiz=posiz+1
conta=conta+1
flag1=mid(flag,posiz,1)
Loop
string1=mid(flag,inizio,conta)
conta=0
posiz=posiz+1
inizio=posiz
flag1=mid(flag,posiz,1)
Do While flag1<>":"
posiz=posiz+1
conta=conta+1
flag1=mid(flag,posiz,1)
Loop
string2=mid(flag,inizio,conta)
Else
trov=false
End If
End Sub
la subroutine funziona correttamente come voglio io(gia' testata).
Pero' quando si ritorna dalla subroutine le stringhe(str,str1,str2) sono vuote.
Dopo tante prove ha funzionato una volta soltanto,poi non ha più funzionato.
Utilizzo la versione OOo 3.3,
secondo voi dove sbaglio?
Grazie per l'attenzione.
[risolto] Problemi con parametri
-
- Messaggi: 11
- Iscritto il: venerdì 17 giugno 2011, 15:38
[risolto] Problemi con parametri
Ultima modifica di nickopenoffice il venerdì 22 luglio 2011, 21:05, modificato 1 volta in totale.
openoffice 3.3.0 windows 7
Re: Problemi con parametri
devi togliere il BY VAL
La dichiarazione BY VAL dovrebbe valere solo per il parametro a cui è associata, ma nelle prove che ho fatto vale anche per gli altri.
per cui invalida il passaggio delle variabili tra le routine.
(Io non lo uso mai, non ne vedo l'utilità)
ciao
g
Codice: Seleziona tutto
Sub scorpora(Funz As String, str As String, str1 As String, str2 As String, trov As Boolean)
per cui invalida il passaggio delle variabili tra le routine.
(Io non lo uso mai, non ne vedo l'utilità)
ciao
g
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
Win 7 AOO4.1 + Ubuntu 14.04 AOO4.1 - Esci dall'illegalità: utilizza OpenOffice !
-
Win 7 AOO4.1 + Ubuntu 14.04 AOO4.1 - Esci dall'illegalità: utilizza OpenOffice !
Re: Problemi con parametri
Per usare delle variabili in diverse procedure la devi definire come "pubblica" nell'intestazione, prima di tutte le procedure Sub. in pratica devono essere dichiarate nel modulo e non nella SubRoutine. Ti faccio un semplice esempio:nickopenoffice ha scritto:Salve a tutti,
ho da poco intrapreso la programmazione per cercare di dare un piccolo contributo al miglioramento di opeoffice.
Ho creato delle macro in basic per cominciare a familiarizzare con il linguaggio.
Il mio problema e' nel passaggio di parametri in una procedura/funzione, alle volte funziona alle volte non; non capisco.
posto una semplice macro :
Dim Doc,Sheet As Object
Dim inputs As String
Dim stringa,stringa1,stringa2 As String
Dim Trovato As Boolean
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(3, 3)
inputs=cell.string
scorpora(inputs,stringa,stringa1,stringa2,trovato)
Doc = ThisComponent
Sheet = Doc.Sheets(0)
Cell = Sheet.getCellByPosition(0, 0)
Cell.String =stringa
Cell = Sheet.getCellByPosition(0, 1)
Cell.String =stringa1
Cell = Sheet.getCellByPosition(0, 2)
Cell.String =stringa2
Cell = Sheet.getCellByPosition(0, 3)
Cell.String =trovato
End Sub
Sub scorpora(ByVal funz As String, str As String, str1 As String, str2 As String, trov As Boolean)
Dim flag,flag1 As String
Dim posiz,conta,inizio As Integer
flag = funz
flag1=mid(flag,2,2)
if (flag1="ma" ) or (flag1="ma") then
trov=true
posiz=4
flag1=mid(flag,posiz,1)
Do While flag1<>":"
posiz=posiz+1
flag1=mid(flag,posiz,1)
Loop
string=mid(flag,4,posiz-4)
conta=0
posiz=posiz+1
inizio=posiz
flag1=mid(flag,posiz,1)
Do While flag1<>":"
posiz=posiz+1
conta=conta+1
flag1=mid(flag,posiz,1)
Loop
string1=mid(flag,inizio,conta)
conta=0
posiz=posiz+1
inizio=posiz
flag1=mid(flag,posiz,1)
Do While flag1<>":"
posiz=posiz+1
conta=conta+1
flag1=mid(flag,posiz,1)
Loop
string2=mid(flag,inizio,conta)
Else
trov=false
End If
End Sub
la subroutine funziona correttamente come voglio io(gia' testata).
Pero' quando si ritorna dalla subroutine le stringhe(str,str1,str2) sono vuote.
Dopo tante prove ha funzionato una volta soltanto,poi non ha più funzionato.
Utilizzo la versione OOo 3.3,
secondo voi dove sbaglio?
Grazie per l'attenzione.
Codice: Seleziona tutto
Dim A As Integer REM Questa variabile è pubblica
Sub Numero1
Numero2
Numero3
Print A
End Sub
Sub Numero2
A = A + 2
End Sub
Sub Numero3
A = A * 5
End Sub
Oppure puoi dichiarare delle variabili Globali che rimangono in memoria anche dopo la fine dell'esecuzione della macro, la puoi dichiarare anche dentro una SubRoutine con l'istruzione Global MiaVariabile As Integer
Se ti servono altre info contattaci su questa discussione.
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
OpenOffice 3.3 su Windows XP
-
OpenOffice 3.3 su Windows XP
-
- Messaggi: 11
- Iscritto il: venerdì 17 giugno 2011, 15:38
Re: Problemi con parametri
Salve,
ho tolto byval ma continuo ad avere sempre problemi di passaggio parametri;
non capisco le ultime due variabili vengono passate correttamente, mentre quelle centrali no.
Che senso ha?
ho tolto byval ma continuo ad avere sempre problemi di passaggio parametri;
non capisco le ultime due variabili vengono passate correttamente, mentre quelle centrali no.
Che senso ha?
openoffice 3.3.0 windows 7
-
- Messaggi: 11
- Iscritto il: venerdì 17 giugno 2011, 15:38
Re: Problemi con parametri
Ho risolto. Ho dicharato la variabile incriminata come global prima del main.
Adesso, funziona. non mi era mai accaduto,strano....
i misteri dell'informatica......
Adesso, funziona. non mi era mai accaduto,strano....
i misteri dell'informatica......
openoffice 3.3.0 windows 7