11-06-2009 03:28 AM
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
11-08-2009 01:55 AM
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? |
11-11-2009 02:03 AM
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
11-11-2009 06:15 AM
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