DIAdem-Version: 11.0 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 22
Registriert seit: Nov 2009
[ERLEDIGT] DIAdem Script für Wert aus Kanal
Guten Morgen zusammen,
Frage 1:
ich habe ein kleines Brett vor dem Kopf und hoffe Ihr könnt mir weiter helfen.
Ich möchte aus einer Langen Spalte einen Bestimmten Wert mit Index xy in das RegisterVal2 schreiben.
bei dem Entwert habe ich es so gelöst
Code:
DIM Chn_laenge
DIM Chn_Wert
DIM vValueP
Chn_laenge = ChnPropValGet("[1]/Temp01", "length")
vValueP = CHD(Chn_laenge,"[1]/Temp01")
Call ChnPropValSet("[1]/Temp01", "registerval1", vValuep)
vValueP = CHD(Chn_laenge,"[1]/Temp02")
Für Hinweise bin ich stehts dankbar.
MFG
Dennis
Antwort zu 1.
(01.04.2011 11:15)Bruno schrieb: Hallo Dennis,
Du möchtest also einen Kanalwert an der Stelle xy auslesen? Aber den Befehl hast Du doch schon...
Dim xy
xy = 123
vValueP = CHD(xy,"[1]/Temp02")
Oder ich hab es noch nicht ganz verstanden...
Gruß
Bruno
Ich würde gerne mit einer for Schleife die Zwanzig Kanäle abarbeiten. Habe aber das Problem das er mir in den String "[1]/Temp01" die 01 nicht mit der Zahl i ersetzt wenn ich "[1]/Tempi" schreibe oder "[1]/Temp&i" wo ist mein gedanken fehler? PHP war da einfacher find ich :#
Antwort zu 2:
(06.04.2011 11:25)bamboocopter schrieb: Hi Dennis,
versuchs mal mit "[1]/Temp" & i, ...
wobei, dann hast du immer noch das Problem mit der führenden Null;
hm, ich denk mal drüber nach, vielleicht komm ich auf was
sg, b.c.
---------------------------------------
Frage 3
Zitat:Nun muss ich nur noch mein abfrage ob der Kanal existiert hinbekommen und ich bin glücklich und um 2 erfahrungen reicher
So schaut es bis jetzt aus
Code:
DIM vValueP
DIM i
DIM Chn_laenge
DIM Chn_Wert
'Es werden 2 Schleifen benutzt das von 1-9 eine 0 vorne steht. Lösung noch nicht vorhanden
'Fühler 1 bis 9
For i = 1 to 9
Chn_laenge = ChnPropValGet("[1]/Temp0"&i, "length")
vValueP = CHD(Chn_laenge,"[1]/Temp0"&i)
Call ChnPropValSet("[1]/Temp0"&i, "registerval1", vValuep)
Next
'Fühler 10 bis 20
For i = 10 to 20
Chn_laenge = ChnPropValGet("[1]/Temp"&i, "length")
vValueP = CHD(Chn_laenge,"[1]/Temp"&i)
Call ChnPropValSet("[1]/Temp"&i, "registerval1", vValuep)
Next
Anwort zu 3
Code:
If CNo("Kanalname")>0 Then
Führe diesen code aus
End If
Beispiel an meinem Code
Code:
DIM vValueP
DIM i
DIM Chn_laenge
DIM Chn_Wert
i = 50
'Es werden 2 Schleifen benutzt da von 1-9 eine 0 vorne steht. Lösung noch nicht vorhanden
'Mit If CNo("[1]/Temp0"&i)>0 Then Prüfe ich ob der Channel vorhanden ist. Ist er Vorhanden so
'gibt er mir den Index des channels raus der größer als 0 ist
'Fühler 1 bis 9
For i = 1 to 9
If CNo("[1]/Temp0"&i)>0 Then
Chn_laenge = ChnPropValGet("[1]/Temp0"&i, "length")
vValueP = CHD(Chn_laenge,"[1]/Temp0"&i)
Call ChnPropValSet("[1]/Temp0"&i, "registerval1", vValuep)
End If
Next
'Fühler 10 bis 20
For i = 10 to 20
If CNo("[1]/Temp"&i)>0 Then
Chn_laenge = ChnPropValGet("[1]/Temp"&i, "length")
vValueP = CHD(Chn_laenge,"[1]/Temp"&i)
Call ChnPropValSet("[1]/Temp"&i, "registerval1", vValuep)
End If
Next
DIAdem-Version: 10.2, 11.1, 2010 und auf alten CD's runter bis 3.0 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1996
Beiträge: 571
Registriert seit: Oct 2008
[ERLEDIGT] DIAdem Script für Wert aus Kanal
Hallo Dennis,
Ich verstehe noch nicht ganz was Du machen willst...
In DIAdem 11 arbeitest Du am Besten mit dem Objekt Daten Modell:
Code:
DIM myChanne1
Set myChanne1 = Data.Root.ChannelGroups(1).Channels("Temp01")
Jetzt kannst Du über
myChanne1(Index)
auf jeden Wert schnell und einfach zugreifen.
Oder mit
myChanne1.Size
die Kanalläne abfragen.
"registerval1" hört sich so nach den DIAdem vorprogrammierten Properties an. Ich würde Dir zu eigenen Properties raten...
Gruß
Bruno
DIAdem-Version: 11.0 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 22
Registriert seit: Nov 2009
[ERLEDIGT] DIAdem Script für Wert aus Kanal
Ah Sry mein Fehler. Sehe gerade das hier DIAdem 10.1 lauft
Mein Kollege möchte das der Entwert des Kanals in "registerval1" und der Wert index(xy) in "registerval2" steht damit er sie in seinem Report dann auslesen kann um sie in die Legende zu füllen.
Nun möchte ich halt nicht per hand jeden Kanal nachschauen bei index(xy) sondern einfach nur den index im script eintragen und das script sucht mir die werte raus und schreibt sie für den Kanal in "registerval2".
DIAdem-Version: 10.2, 11.1, 2010 und auf alten CD's runter bis 3.0 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 1996
Beiträge: 571
Registriert seit: Oct 2008
[ERLEDIGT] DIAdem Script für Wert aus Kanal
Hallo Dennis,
Du möchtest also einen Kanalwert an der Stelle xy auslesen? Aber den Befehl hast Du doch schon...
Dim xy
xy = 123
vValueP = CHD(xy,"[1]/Temp02")
Oder ich hab es noch nicht ganz verstanden...
Gruß
Bruno
Ich würde gerne mit einer for Schleife die Zwanzig Kanäle abarbeiten. Habe aber das Problem das er mir in den String "[1]/Temp01" die 01 nicht mit der Zahl i ersetzt wenn ich "[1]/Tempi" schreibe oder "[1]/Temp&i" wo ist mein gedanken fehler? PHP war da einfacher find ich :#
DIAdem-Version: 11 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2011
Beiträge: 16
Registriert seit: Mar 2011
[ERLEDIGT] DIAdem Script für Wert aus Kanal
Hi Dennis,
versuchs mal mit "[1]/Temp" & i, ...
wobei, dann hast du immer noch das Problem mit der führenden Null;
hm, ich denk mal drüber nach, vielleicht komm ich auf was
sg, b.c.
06.04.2011, 12:47 (Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2011 14:44 von Dennis.)
DIAdem-Version: 11.0 DIAdem-Sprachversion: DE DIAdem Erfahrung seit: 2009
Beiträge: 22
Registriert seit: Nov 2009
[ERLEDIGT] DIAdem Script für Wert aus Kanal
Damit lauft es
Das mit der Null umgehe ich einfach indem ich 2 For schleifen mache. Einmal von 1-9 und einmal von 10-20
nun muss ich nur noch mein abfrage ob der Kanal existiert hinbekommen und ich bin glücklich und um 2 erfahrungen reicher
So schaut es bis jetzt aus
Code:
DIM vValueP
DIM i
DIM Chn_laenge
DIM Chn_Wert
'Es werden 2 Schleifen benutzt das von 1-9 eine 0 vorne steht. Lösung noch nicht vorhanden
'Fühler 1 bis 9
For i = 1 to 9
Chn_laenge = ChnPropValGet("[1]/Temp0"&i, "length")
vValueP = CHD(Chn_laenge,"[1]/Temp0"&i)
Call ChnPropValSet("[1]/Temp0"&i, "registerval1", vValuep)
Next
'Fühler 10 bis 20
For i = 10 to 20
Chn_laenge = ChnPropValGet("[1]/Temp"&i, "length")
vValueP = CHD(Chn_laenge,"[1]/Temp"&i)
Call ChnPropValSet("[1]/Temp"&i, "registerval1", vValuep)
Next
06.04.2011, 14:43 (Dieser Beitrag wurde zuletzt bearbeitet: 06.04.2011 14:48 von Dennis.)