INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.




Unsere Partner:

DIAdem-Forum.de Partner

DIAdem-Forum.de Partner






Stellenangebote:
Big Data Scientist / Analyst (m/w) Messdatenmanagement
Ingolstadt

Programmierer/in Bereich SPS und Roboter-Steuerungen
Bühl

Projektmanager Visualisierung (m/w)
München, Fulda

Inbetriebnehmer (m/w) für Visualisierungssysteme
Bietigheim-Bissingen

AMG Entwicklungsingenieur eDrive (m/w)
Affalterbach





.
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5

Kein Autoquit mehr in DIAdem 2015
03.06.2016, 10:16,
#1
DIAdem-Version: 11
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 2011
Kein Autoquit mehr in DIAdem 2015

Hallo Kollegen,
in der neuen DIAdem-Version gibt es den Befehl "AutoQuit" für das gezielte Beenden (Abbrechen) des laufenden Scripts nicht mehr.
Stattdessen soll mit Err.Raise ein Fehler erzeugt werden, der das Script dann beendet.
Dieser Err.Raise erzeugt eine Fehlermeldung mit der Angabe der Zeilennummer und eine Fehlererklärung die ich nicht haben möchte. Die Kollegen sind immer sehr verunsichert über diese Meldung.
Autoquit beendete das Script mit einer von mir vorgegebenen Meldung warum das jetzt und hier passiert.

Wie kann ich die nicht gewünschte Ausgabe der Err.Raise-Fehlermeldung abschalten?
Oder, wie gelingt es mir, das Verhalten von AutoQuit mit Err.Raise nachzubauen?

Vielen Dank!

Antworten
13.06.2016, 13:28, (Dieser Beitrag wurde zuletzt bearbeitet: 13.06.2016, 13:47 von chaosyeti.)
#2
DIAdem-Version: 2017 Beta2 / seit 4.0 dabei
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 1996
RE: Kein Autoquit mehr in DIAdem 2015

Hallole,

erst mal danke für den Hinweis, das war mir noch gar nicht aufgefallen! ;-)

Naja, bezogen auf das Hilfe-Script:

Code:
Dim sOutput
On Error Resume Next
Call Err.Raise(6) 'Raise an overflow error
If Err.Number <> 0 Then
  sOutput = "Error Number: " & Err.number & VBCrLf & _
  "Description: " & Err.Description
  Call MsgBox(sOutput, , "Error: " & Err.Description)
End If
On Error Goto 0
Call Err.Clear()

kannst Du ja einfach die "Fehler"-Meldung ändern:
Code:
sOutput = "Script beendet oder macht was anderes"

Wie soll das Script beendet werden?
In meinem Fall via Schaltfläche. Die Buttons bekommen Zahlen zugewiesen und "0" ist "Beenden":
Code:
Do
  Start_DlgB = 0
  Call SudDlgShow("Dlg_Start", SudDir & "SudFile") '--- öffnet Anwenderabfragedialog
  Select Case Start_DlgB
    Case 0    '-- beenden
      Msgbox "Und Tschüß"
    Case 1  
      Msgbox "Handansteuerung"
    Case 2  
      Msgbox "Automatikbetrieb"
  End Select
Loop While Start_DlgB <> 0

Antworten
17.06.2016, 07:18,
#3
DIAdem-Version: 11
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 2011
RE: Kein Autoquit mehr in DIAdem 2015

Hallo chaosyeti,

Danke für Deine Antwort.
Leider löst der Beispiel-Code das Problem nicht!
Dieser Code beendet das laufende Script nicht!
Wenn Du an den Schluss z.B. eine Msgbox hängst, erkennst Du, dass das Programm diese Msgbox ausführt.
Genau das soll nicht sein.
Das alte Autoquit beendet sofort das komplette Script.

Antworten
20.06.2016, 13:13,
#4
DIAdem-Version: 2017 Beta2 / seit 4.0 dabei
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 1996
RE: Kein Autoquit mehr in DIAdem 2015

Hallo Eber,

Hm, okay, ich hatte das so gestaltet, dass es für meine Anwendung funktionierte.
Hast Du eine Sub oder vergleichbares um Dein Script gebaut? Dann geht es ganz einfach mit "Exit Sub".

Beispiel:

Code:
dim i
call test
sub test
  for i = 1 to 10
    if i = 5 then
      exit sub
    end if  
    msgbox i
  next  
end sub

Mehr Infos:
--> http://zone.ni.com/reference/de-XX/help/370858M-0113/vbs/general/vbs_exit/

Gruß
Yeti

Antworten
22.06.2016, 08:34,
#5
DIAdem-Version: 2017, 2015 32/64bit, 2014 32bit SP1, 2012, 2011, 2010, 11.1, 10.2.1 und fast alle davor, und davor noch DIA/DAGO
DIAdem-Sprachversion: DE/EN
DIAdem Erfahrung seit: 1995
RE: Kein Autoquit mehr in DIAdem 2015

Hallo zusammen,

der Befehl

Call AutoQuit

funktioniert ja Gott sei dank noch in den 2015er-Versionen in 32- und 64Bit und ich hoffe NI entfernt ihn, ausser dem Hinweis der Nichtverwendung in der Hilfe seit DIAdem 2014, nicht irgendwann endgültig aus der Scriptumgebung.

Selbst das so beliebte Tool Excel kennt in VBA einen Befehl für das Abbrechen eines Makros im Code (= der 'End'-Befehl )

Das einzige Problem das 'AutoQuit' hat, ist dass er keine Anwenderdialoge mit beendet, aber das kann ja der Programmierer vermeiden.

Mein Hauptprogramm als Unterprogramm laufen zu lassen um es mit 'Exit Sub' abbrechen zu können oder die Klimmzüge mit 'err.raise' halte ich alles als viel zu aufwändig und auch unlogisch, um es meinen von mir geschulten und supporteten Kollegen beizubringen, die zu 95% keine Informatiker sind und mit Script einfach zum Ziel kommen wollen.

Ich schicke mal NI einen Link hierher, vielleicht können sie mal was dazu schreiben...

Grüße grisu

Antworten
22.06.2016, 12:58, (Dieser Beitrag wurde zuletzt bearbeitet: 24.06.2016, 12:00 von Carpe_DIAdem.)
#6
DIAdem-Version: alle
DIAdem-Sprachversion: DE/EN
DIAdem Erfahrung seit: 1995
RE: Kein Autoquit mehr in DIAdem 2015

Hallo DIAdem-User,

Der Befehl „AutoQuit“ wurde aus gutem Grund als obsolet gekennzeichnet und wird in einer späteren Version ganz entfernt. Je nach Script-Konstellation kann dieser Befehl DIAdem zu sehr unschönen Meldungen und Handlungen bringen. Diese Situationen müssen vermieden werden. Mit obsolet meinen wir eine befristete Übergangszeit, in der wir ankündigen, dass ein Befehl nicht mehr verwendet werden soll und in einer späteren Version auch nicht mehr unterstützt wird.
Wir nutzen VBS als Container für DIAdem-Befehle und -Variablen. Deshalb ist es nur konsequent VBS-Mittel einzusetzen um ein Script an einer bestimmten Stelle in einer bestimmten Situation ganz oder abschnittweise zu verlassen. Dazu können die VBS-Funktionen EXIT und ERR.RAISE benutzt werden.
EXIT verlässt den Kontext von DO, FOR, FUNCTION und SUB und mit ERR.RAISE das Script. Um eine gezielte Information auszugeben, kann ERR.RAISE parametriert werden. Hier ein Beispiel:

call err.Raise(1, "DIAdem", "Das ist ein Fehler")

Ich sehe nicht das diese Vorgehensweise einen Klimmzug darstellt, noch halte ich sie für zu aufwändig, oder gar unlogisch. Ganz das Gegenteil ist der Fall. Diese Abbruchvarianten unterstützen eine strukturierte Script-Erstellung, erleichtern die Wartbarkeit und erlauben eine gezielte Unterbrechung bestimmter Kontexte ohne gleich das ganze Script zu beenden.
Aus meiner Sicht besteht hier die größte Aufgabe darin sich einen obsoleten Befehl abzugewöhnen und eine andere Vorgehensweise anzugewöhnen - und den Willen das auch zu tun. Ein Informatiker muss man also nicht sein.

Carpe DIAdem

Antworten
24.06.2016, 10:25,
#7
DIAdem-Version: 2017 Beta2 / seit 4.0 dabei
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 1996
RE: Kein Autoquit mehr in DIAdem 2015

Hallo zusammen,

erstmal danke an grisu und Carpe DIAdem für die Antworten.

Viele DIAdem-Anwender sind nicht geschult im Programmieren - ich selbst habe meine Programmierkenntnisse nahezu ausschließlich durch DIAdem erworben. Da war seinerzeit die VBS-Einführung schon hartes Brot! ;-)

In einem Punkt muss ich Eber jedoch Recht geben: wenn das Script mit Call Err.Raise(1) beendet wurde, erscheint (natürlich) eine Fehlermeldung. Gibt es die Möglichkeit, diese zu manipulieren? Das Icon mit vbInformation zu "entschärfen"?
In der Art, wie man auch bei Call MsgBoxDisp die Icons z.B. mit den Variablen für [MsgType] beeinflussen kann. Das wäre hilfreich! Smile


Eber: lass mal das "On Error Resume Next" weg. Dann erscheint auch keine nachgefügte MsgBox mehr. ;-)

Antworten
24.06.2016, 12:05,
#8
DIAdem-Version: alle
DIAdem-Sprachversion: DE/EN
DIAdem Erfahrung seit: 1995
RE: Kein Autoquit mehr in DIAdem 2015

Hi,

wenn man eine Meldung bei err.raise vermeiden möchte kann man das mit dem Parameter -1 versuchen.

Carpe DIAdem

Antworten
27.06.2016, 11:48,
#9
DIAdem-Version: 11
DIAdem-Sprachversion: DE
DIAdem Erfahrung seit: 2011
RE: Kein Autoquit mehr in DIAdem 2015

(24.06.2016, 12:05)Carpe_DIAdem schrieb:  Hi,

wenn man eine Meldung bei err.raise vermeiden möchte kann man das mit dem Parameter -1 versuchen.

Carpe DIAdem

Hallo an alle Antwortgeber,

super, wie das hier läuft!

Carpe DIAdem: Deine letzte Antwort ist der Schlüssel für die Lösung meines Problems. Dieser Parameter - 1 schaltet die von mir nicht gewünschte Err.Raise Fehlermeldung komplett ab und das Script endet genau an dieser Stelle. Eine vorgeschaltete MsgBoxDisp kann dem unbedarften User mitteilen, was jetzt gerade Sache ist.

Alles wieder gut und den Befehl AutoQuit vermisse ich schon nicht mehr.

Ein Hinweis an NI: Ein kleines Beispiel bei der Hilfe zu AutoQuit um dessen Funktionalität mit der neuen Methode (Err.Raise -1) genau nachzubilden, hätte mir / uns das alles erspart.

Vielen Dank

Antworten
05.07.2016, 06:56,
#10
DIAdem-Version: 2017, 2015 32/64bit, 2014 32bit SP1, 2012, 2011, 2010, 11.1, 10.2.1 und fast alle davor, und davor noch DIA/DAGO
DIAdem-Sprachversion: DE/EN
DIAdem Erfahrung seit: 1995
RE: Kein Autoquit mehr in DIAdem 2015

Hallo Leute,

auch von mir vielen Dank an Carpe DIAdem fürs "Licht ins Dunkel" bringen.

Die Lösung mit

Err.Raise -1

oder

Call Err.Raise(-1)

ist auf jeden Fall eine gute und vergleichbare Lösung zum AutoQuit-Befehl.

Muss aber auch Eber beipflichten, dass dieser Tipp in der Hilfe zu AutoQuit echt gut (gewesen) wäre.

Grüße grisu

Antworten


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Wie kann man mit VBS (DIAdem) Excell Registerblätter auslesen FatihEminSahin 3 4.573 18.05.2016, 10:30
Letzter Beitrag: FatihEminSahin
  Ereignissuche DIAdem 2015 Jochenknochen 5 6.580 03.11.2015, 16:35
Letzter Beitrag: ThomasGull
  Trendlinie mit DIAdem rooki_1 1 4.509 13.08.2015, 09:30
Letzter Beitrag: rooki_1
  DIAdem nicht in 2. Instanz starten rooki_1 1 4.891 04.02.2015, 14:44
Letzter Beitrag: grisu
  [gelöst] Batch von Dos in DIAdem starten Mike 2 5.138 04.02.2015, 11:35
Letzter Beitrag: Mike
  ActChnNo nicht mehr in DIAdem2012 Multimeter 1 3.493 26.05.2014, 07:15
Letzter Beitrag: Carpe_DIAdem
  [ERLEDIGT] LabVIEW Zeitstempel in DIAdem (Binärdatei) MichiR 1 5.556 22.01.2014, 19:40
Letzter Beitrag: MichiR
  DIAdem Dialogfenster nur als Anzeige eines "Ladebalkens" verwenden crillo 1 5.676 09.01.2014, 18:01
Letzter Beitrag: MichiR
  DIAdem direkt auf Signalerfassungssystem Paula 1 4.342 07.08.2013, 11:06
Letzter Beitrag: voyager
  DIAdem Script von 9.0 nach 2012 NiTi 0 5.046 18.11.2012, 17:45
Letzter Beitrag: NiTi

Gehe zu: