DIAdem

cancel
Showing results for 
Search instead for 
Did you mean: 

Datenübergabe Dialog -> Script nicht mgl?

Hallo,
habe mir für die Übergabe eine Variable in MyVar.vas erstellt.

MyVekt_ : F [200](50)

Sie soll max. 200 Pfadangaben a max. 50 Zeichen aufnehmen.

Im Sud-Edit habe ich die Variable als Vektor  Freier Text   MyVekt_ eingebunden. Sie wurde anstandslos neu ermittelt.

Im Dialogedit belege ich sie mit den Zeilen einer Liste

For i = 2 To x
   MyVekt_(i-1) = ListBox1.Items(1).Text + ltrim(ListBox1.Items(i).Text)
Next

 

 

Im DIAdem Script binde ich die Variable ein

Call UserVarCompile("D:\National Instruments\DIAdem 11.1\script\MyVar.vas")

 

lade den Dialog

Call SudDefLoad(Dateipfad & "\" & dialog)

Call SUDDlgShow("StartDialog")

 

und versuche eine Datei zu öffene

Call DataFileImport(MyVekt_(1),"csv", 0)

 

Es erscheint die Fehlermeldung

---------------------------
Dialogeditor (SUD)
---------------------------
Die Variable(n) konnte nicht mit dem Dialog verbunden werden:
MyVekt_ : Sie haben diese Variable mit einem falschen Typ spezifiziert. Der richtige Typ wäre: Variant

---------------------------
Was natürlich nicht stimmen kann, denn Anwendervariablen kann man NICHT als Variant in der vas deklarieren!?

Weiß jemand Hilfe, wie ich Dialog und Script über diesen Vektor verbinden kann?

Gruß Traderhans

0 Kudos
Message 1 of 4
(4,915 Views)

Hallo Traderhans!

 

Ich hab das mal durchgespielt und bei mir funktioniert es (DD11.1). Es muss also bei dir noch was geben was du nicht in deinen Post eingefügt hast. Mach doch mal einfach vor dem Aufruf des SUD eine MsgBox rein die den Variableninhalt des ersten Eintrages ausgibt, um zu sehen ob die Variable dort wirklich vorhanden ist.

 

IMHO ist, wenn man keine 'Altlasten hat, heute der bessere Weg Variablen mit der Funktion GlobalDim zu deklarieren. Dann ist das auf jeden Fall ein Variant.

 

Matthias

Matthias Alleweldt
Project Engineer / Projektingenieur
Twigeater?  
0 Kudos
Message 2 of 4
(4,897 Views)
Hallo Matthias,
 
danke für die Antwort.
Ich habe natürlich eine msgbox im SUD-Script und erhalte so auch den gewünschten Inhalt angezeigt. Wenn ich nun die gleiche Variable mittels msgbox im DD anzeige, erscheint "" - die Information ist also bei der Übergabe SUD - DD verlorengegangen.
Das Programm läuft so zwei-/ dreimal. Dann erscheint die Fehlermeldung mit dem Variant und die msgboxes werden im Ablauf erst gar nicht mehr erreicht.
 
Mit GlobalDim funktioniert es leider auch nicht. Hatte ich schon probiert.
DD:

Option Explicit

Call GlobalDim("MyNew()")

const dialog = "CVSload.SUD"

const Dateipfad = "D:\National Instruments\DIAdem 11.1\script\"

Call SudDefLoad(Dateipfad & "\" & dialog)

Call SUDDlgShow("StartDialog")

msgbox(MyNew(1))

 

SUD:

Sub Button1_EventClick()
Dim This : Set This = Button1
Dim x, i,MyNew()
x = ListBox1.Items.Count
For i = 2 To x
   MyNew(i-1) =ListBox1.Items(1).Text + ltrim(ListBox1.Items(i).Text)

Next
msgbox(MyNew(1))

End Sub

 

Es erscheint der Fehler: ....EventClick, Line 6> Index außerhalb des gültigen Bereiches: ´MyNew´

Ich muß aber MyNew als Vektor behandeln, sonst bekomme ich die Informationen nicht rein!?

 

Gruß Bernard

0 Kudos
Message 3 of 4
(4,865 Views)
Hallo,
 
nun habe ich nach Rechere in der Hilfe einen Weg ohne vas und GlobalDim gefunden.
 
DD:

Option Explicit

Dim i, oArray 

Redim oArray(300) 'Vektor mit 300 Elementen anmelden 

const dialog = "CVSload.SUD"

const Dateipfad = "D:\National Instruments\DIAdem 11.1\script\" 

Call SUDDlgShow("StartDialog",Dateipfad & "\" & dialog,oArray) 'Vektor an SUD übergeben 

Call DataFileImport(oArray(1),"csv", 0)

 

SUD:

Sub Dialog_EventInitialize()
Dim This : Set This = Dialog
Dim oDlgParams
 oDlgParams = Dialog.GetArgument() 'oArray von DIAdem übernehmen

..........

 

Sub Button1_EventClick()
Dim This : Set This = Button1
Dim x, i

x = ListBox1.Items.Count

  Redim oDlgParams(x)             ' an Listenlänge anpassen
 
  For i = 2 To x
    oDlgParams(i-1) = ListBox1.Items(1).Text + ltrim(ListBox1.Items(i).Text) 'Liste schreiben in oArray
   Next
 Dialog.SetArgument(oDlgParams) 'an DIAdem übergeben

End Sub

...............

 

Funktioniert prima!

Gruß Bernard

0 Kudos
Message 4 of 4
(4,856 Views)