"Find" bzw "ChnFind"-Methode erkennt "<" nicht

  • VBScript

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Michger.

    "Find" bzw "ChnFind"-Methode erkennt "<" nicht

    Deutsch:

    Hallo miteinander.
    Ich scripte gerade VBS mit DIAdem von NationalInstruments.
    Dabei hat sich ein Problem ergeben.
    Ich versuche aus einem Datenkanal/einer Spalte Grenzwert über- und unterschreitungen herauszufiltern und in einem eigens dafür erstellten .txt-Dokument zu speichern.
    Für die Überschreitungen (Find-Methode mit ">") funktioniert das auch hervorragend,
    nicht jedoch wenn ich "<" nutze, dann gibt Find imm "0" zurück, was ja heißt "habe nichts gefunden"
    Hier ein Beispiel:

    Quellcode

    1. Do 'While (ChannelNr < finalcount)
    2. ChannelNr = ChannelNr+1
    3. laengemax = ChnLength(Ch("[" & ChannelNr & "]/I_" & pruefling &"\15"))
    4. var = msgboxdisp ("ChannelNr =" & ChannelNr & vbCrlf & "ChnLength: =" & laengemax,"MB_OK", "MsgTypeInformation",0,2)
    5. intMyResult1 = 1
    6. 'Hilfe für Schleifen-EXIT
    7. uebergabecount = 1
    8. uebergabefind = 1
    9. uebergabefind = chnFind("Ch(""[" & ChannelNr & "]/I_" & pruefling & "\15"") < " & iunten , 1)
    10. Do while uebergabefind <> 0
    11. morefail1 = intMyResult1+1
    12. intMyResult1 = chnFind("Ch(""[" & ChannelNr & "]/I_" & pruefling & "\15"") < " & iunten , morefail1 )
    13. if morefail1 = 0 then AutoQuit
    14. if morefail1 = laengemax then AutoQuit
    15. pastefail1 = CHV(intmyresult1,"[" & ChannelNr & "]/I_" & pruefling & "\15")
    16. timefail1 = CHV(intmyresult1,"[" & ChannelNr & "]/Time")
    17. intMyHandle1 = TextFileOpen((MyFolders(0) & "Fehlerprotokoll.txt"), eTextFileAttributeWrite )
    18. intMyText1 = TextfileWriteLn(intMyHandle1, "Zeitstempel: " & timefail1 & " Fehler für I < Grenzwert. I=" & pastefail1 & " !" )
    19. TextFileClose(intMyHandle1)
    20. 'Hilfe für Schleifen-EXIT
    21. uebergabecount = uebergabefind+1
    22. uebergabefind = Find("Ch(""[" & ChannelNr & "]/I_" & pruefling & "\15"") < " & iunten , uebergabecount )
    23. loop 'Grenzwert1
    24. loop Until (ChannelNr = finalcount)'Channel


    Wenn jemand eine Idee hat, an was das liegen kann, wäre ich unheimlich dankbar (=

    Viele Grüße
    Micha





    English:
    Hi all,
    I'm new here but cant find a topic that looks my problem.

    Im scripting in VBS at the moment.
    My script searches for outliners and copy them to an new .txt document.
    Basicly it work great with ">". But when I use "<" to compare the measurement-data with the limit
    find returns "0" as answer. That means "nothing found".
    Here a sample about my problem:

    Quellcode

    1. Do 'While (ChannelNr < finalcount)
    2. ChannelNr = ChannelNr+1
    3. laengemax = ChnLength(Ch("[" & ChannelNr & "]/I_" & pruefling &"\15"))
    4. var = msgboxdisp ("ChannelNr =" & ChannelNr & vbCrlf & "ChnLength: =" & laengemax,"MB_OK", "MsgTypeInformation",0,2)
    5. intMyResult1 = 1
    6. 'Hilfe für Schleifen-EXIT
    7. uebergabecount = 1
    8. uebergabefind = 1
    9. uebergabefind = chnFind("Ch(""[" & ChannelNr & "]/I_" & pruefling & "\15"") < " & iunten , 1)
    10. Do while uebergabefind <> 0
    11. morefail1 = intMyResult1+1
    12. intMyResult1 = chnFind("Ch(""[" & ChannelNr & "]/I_" & pruefling & "\15"") < " & iunten , morefail1 )
    13. if morefail1 = 0 then AutoQuit
    14. if morefail1 = laengemax then AutoQuit
    15. pastefail1 = CHV(intmyresult1,"[" & ChannelNr & "]/I_" & pruefling & "\15")
    16. timefail1 = CHV(intmyresult1,"[" & ChannelNr & "]/Time")
    17. intMyHandle1 = TextFileOpen((MyFolders(0) & "Fehlerprotokoll.txt"), eTextFileAttributeWrite )
    18. intMyText1 = TextfileWriteLn(intMyHandle1, "Zeitstempel: " & timefail1 & " Fehler für I < Grenzwert. I=" & pastefail1 & " !" )
    19. TextFileClose(intMyHandle1)
    20. 'Hilfe für Schleifen-EXIT
    21. uebergabecount = uebergabefind+1
    22. uebergabefind = Find("Ch(""[" & ChannelNr & "]/I_" & pruefling & "\15"") < " & iunten , uebergabecount )
    23. loop 'Grenzwert1
    24. loop Until (ChannelNr = finalcount)'Channel


    If anyone has an Idea, please inform me (=

    Thanks a lot.
    sincerely Michael
    Gute das war einfach....

    Hier noch meine Lösung (nicht anspruchsvoller, aber wenigstens bin ich selbst drauf gekommen), für jene die es Interessiert

    Die
    Schleife ist so gelegt, dass der übertrag(Hilfsvariable) "langsamer"
    ist als der eigentlich zählwert für die Zeile des Kanals/der Spalte.

    Im
    VBS gibt es nun leider keine "GoTo" anweisung (welche man ja als
    vorbildlicher Programmierer soundso nicht so gern nutzt c(; )
    , mit der man im Fall x den/die Befehl(e) überspringen kann, die den Fehler generieren.

    Die Lösung ist eine If Schleife die genauso fungiert wie eine GoTo anweisung.

    heißt im Quelltext:

    Quellcode

    1. if (Fall_x <> 0) Then
    2. 'Problembefehle wie zB.
    3. intmyresult1 = Find("Ch(""[" & ChannelNr & "]/I_" & pruefling & "\15"")<" & ioben & "", morefail1 )
    4. pastefail1 = CHV(intmyresult1,"[" & ChannelNr & "]/I_" & pruefling & "\15")
    5. 'CHV ist übrigens der Befehl, der den Fehler bringt, da er die Zeile 0 nicht lesen kann
    6. Else
    7. var = MsgBoxDisp ("Hier muss im Grunde garnichts passieren","MB_OK","MsgTypeInformation",0,2)
    8. EndIf

    Wird Fall_x im Beispiel 0 (also Fehlermeldung würde Erscheinen) geht es nicht zum "If" sondern ins "else"

    Mehr ist es garnicht.


    VG Micha