From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
11-27-2006 08:08 AM
11-27-2006 12:44 PM
Hallo Patrick!
Das sollte man mit zwei DIAdem Befehlen deutlich schneller hinbekommen. 1. Schritt dazu ist im Bedingungskanal 335 alle zu löschenden Zeilen mit NoValue zu kennzeichnen. Mit einem kleinen Trick macht das der DIAdem Formelinterpreter mit dem Befehl FormulaCalc
in dem man jeden Wert durch das Vergleichsergebnis teilt. Ist der Vergleich nicht erfüllt so ist der Wert 0 ansonsten 1. Eine Division durch 0 führt zu einem NoValue, durch 1 erhält den Originalwert. Damit das für dich richtig ist muss nur aus x <> 5
ein x = 5
werden. Der 2. Schritt ist dann alle Zeilen mit einem NoValue im Vergleichskanälen und den zugeordneten Kanälen zu löschen. Dazu gibt es den Befehl ChnNovHandle
. Der macht das dann auch für die zugeordneten Kanäle und kann das Ergebnis in den Ursprungskanälen speichern.
Das sieht dann in Code gegossen so aus:
Call FormulaCalc("Ch(335) := Ch(335) / (Ch(335) = 5)")
Call ChnNovHandle(355,"337-407","Delete","XY",1,0)
Sicherlich nicht leicht lesbar, aber probiere es mal aus
Matthias
Matthias Alleweldt Project Engineer / Projektingenieur | Twigeater? |
11-28-2006 03:54 AM
Hi Matthias,
Danke für deinen Tipp.Es hat gut funktioniert.
Ich hatte auch einen Script geschrieben mit ~10 Zeilen, aber mit diesem 2-Zeilen Script ist es viel einfacher.
Gruß.
Patrick