For-Schleife mit Aufruf eigener Funktion mit Parameterübergabe -> Parameter illegal String?

Antworten
IvicaE
Beiträge: 136
Registriert: 13 Sep 2016, 14:10

For-Schleife mit Aufruf eigener Funktion mit Parameterübergabe -> Parameter illegal String?

Beitrag von IvicaE »

Hallo Leute,

ich brauche wieder einmal mehr eure Unterstützung.

Ich möchte mir das Leben im OPSI-Scripten etwas einfacher machen und mehr mit Schleifen, eigenen Funktionen und Parameter arbeiten.

Ich habe ein OPSI-Paket welches mir mehrere Parameter anbietet.
Parameter 1 und 2 sind ein muss, Parameter 3-7 sind Pfadangaben zu ausführbaren Programmen. Diese muss mindestens 1 Angabe haben, kann aber bis 5 enthalten.

Die Properties für die Pfadangabe haben alle den selben Aufbau: prog1, prog2,..,prog5

So, ich würde gerne in diesem Fall eine For-Schleife erstellen welche dann eine eigene Sub aufruft und den Schleifenzähler übergibt.
In dieser 'Funktion (also die 'Sub') will ich prüfen ob ein Property gesetzt ist und wenn ja in eine String-Liste aufnehmen (global deklariert) welche ich später dann 'weiterverwenden will.

So, nun ich habe eine For-Schleife und ich habe eine eigene Sub welche ich in der Schleife aufrufe und den Schleifenzähler als Parameter übergebe.

Code: Alles auswählen

for %s% = "1" to "5" do Sub_getPropertyPathValue %s%
In der Sub selber habe ich folgendes:

Code: Alles auswählen

[Sub_getPropertyPathValue]
set $tmpVar$ = "prog_"+%1
comment $tmpVar$
Auch habe ich versucht auch nur den 1. PArameter auszugeben mit comment %1 oder auch Message %1.
Leider bekommei ch bei allen Versuchen immer ein
illegal String ExpressionStr
bzw. im konkreten Fall:
$tmpVar$ = "prog_1"+%1 -> %1 illegal String Expressionstr
Ich bin ein alter Programmierer und fühle mich in so einigen Sprachen recht wohl und zu Hause.
Aber hier stehe ich noch auf sehr wackeligen Beinen und weiß eigentlich sozusagen nichts.

Parameter an Funktionen können doch mittlerweile übergeben werden, richtig? Parameter ansprechen tut man wie in einer Batchdatei mit der Nummerierung incl. dem vorhergehenden %-Zeichen, richtig?
Winst kennt nicht wirklich Integervariablen was mir in meinem Vorhaben ja recht Wurst sein kann -> Die Zahl im Parameter müsste demnach ja bereits ein String sein. Und wenn nicht, finde ich im Handbuch leider nichts zu Umwandlungen von Zahlen zu Strings.
Wieso meckert Winst an dieser Stelle und was passt ihm hier nicht wirklich?

Nach der Lösung dieses Problemes (hoffentlich) komme ich ja zu dem Punkt das ich die Properties in dieser Sub auslesen möchte. Wird das Vorhaben so überhaupt gehen oder übesehe ich vielleicht noch was grundlegendes?

Jedenfalls schon einmal im Voraus danke für eure Hilfe oder zumindest das Lesen bis hierher ;)
IvicaE
Beiträge: 136
Registriert: 13 Sep 2016, 14:10

Re: For-Schleife mit Aufruf eigener Funktion mit Parameterübergabe -> Parameter illegal String?

Beitrag von IvicaE »

Natürlich könnte es sein, ist sogar wahrscheinlich, das ich einfach nur blöd bin, aber ich finde auch in der Winst-Anleitung nichts zu diesem Thema.

Ich finde nicht einmal die Parameterübergabe an Sub-Funktionen außer die von der Umgebung vorgesehenen PArameter wie 32 / 664 / Sysnative u.ä.

Daher meine Frage: geht das überhaupt?
Irgendwo (Internet, Forum, sonst wo) habe ich bei irgendwem gesehen daß Parameter übergeben wurden und daß man auf diese wie in der Batch-Datei (%1, %2, usw.) zugreifen kann in der Sub-Funktion.
Irre ich mich in dieser Sache?

Wenn ich mich irre:
Muss ich über eine globale Variable gehen wie auch schon in älteren Forenbeiträgen gefunden zu älteren OPSI-Versionen?

Wenn ich mich nicht irre:
Dann bekomme ich die Syntax wohl nicht wirklich hin..

Code: Alles auswählen

sub_test "Hello world"

[sub_test]
comment %1
Ergebnis: Leere Zeile zwischen 'Start Sub' und 'End Sub' in der sub_test

Mit einer globalen Variable geht das schon, aber wenn es per Parameter funktionieren würde wäre das noch besser.
Benutzeravatar
n.wenselowski
Ex-uib-Team
Beiträge: 3194
Registriert: 04 Apr 2013, 12:15

Re: For-Schleife mit Aufruf eigener Funktion mit Parameterübergabe -> Parameter illegal String?

Beitrag von n.wenselowski »

Hi,

es läuft im Winst ein wenig anders.
Hier definierst du deine Variablen und greifst in der Sub einfach darauf zu - eine Übergabe muss nicht stattfinden, gibt es so aktuell noch gar nicht.

Dein erstes Beispiel kannst du mal so probieren:

Code: Alles auswählen

for %s% = "1" to "5" do Sub_getPropertyPathValue

Code: Alles auswählen

[Sub_getPropertyPathValue]
set $tmpVar$ = "prog_"+%s%
comment $tmpVar$
Ich hoffe das hilft dir weiter!

Gruß

Niko

Code: Alles auswählen

import OPSI
Antworten