Winccflex script hört nicht bei fehler auf

Bensen83

Level-1
Beiträge
777
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe ein kleies script, welches mir eine csv einliest. Jetzt wollte ich einmal simmulieren, was passiert, wenn in der csv falsche werte drin stehen würden und somit einen fehler ausgeben. dies habe ich wie folgt realisiert.
Code:
For i = 0 To spalten

 SmartTags("Fehler") = "Fehler in Zeile " & aktuelle_Zeile & ", Parameter " & i+1
                
  MyArray1(arrayelement) = field(i)
  arrayelement = arrayelement + 1

NEXT
das Smarttag fehler wird vor jedem schreiben in das Array mit der aktuellen zeile beschrieben. (Das ist einfach ein string, der beim erfolgreichen ablauf des scripts abgelöscht wird. Aber auch wenn ich in bspw. zeile 1 spalte 2 einen fehler erzeuge. stehen immer die werte der letzten zeil letzte spalte drin. Er führt allerdings keine weiteren Aktionen nach der For schleife aus.
aber warum wird diese komplett durchlaufen?
Kann mir das jemand sagen?
Ps. es wurde extra kein on error objekt verwendet
 
Hallo Benson,
wenn du möchtest, dass nur dann etwas passiert, wenn eine bestimmte Bedingung erfüllt ist, dann wäre das ein Fall für :
Code:
if Bedingung = true then
end if
... das könnte dann auch in der Schleife stehen ...
Deine aktuelle Schleife hat die Aufgabe immer komplett durchzulaufen (und auch immer Alles zu tun).

Gruß
Larry
 
Ok

Aha, ich dachte wenn ich kein on error objekt aktiv habe, hört das skript einfach nach einem fehler auf. ich habe auch in der forschleife schon einen Vergleich auf err = 0 gemacht und nur dann die aktionen durchgeführt, aber trotzdem hat er es bis zur letzten zeile ausgeführt, obwohl schon vorher fehler aufgetreten sind
 
Zuviel Werbung?
-> Hier kostenlos registrieren
:confused: ... du hast innerhalb deines Scriptes (im Moment jedenfalls nicht) keinen Code stehen, der einen Err im Sinne von VB auslösst. Und selbst wenn dann würde auch der sich nicht so verhalten, wie von dir gewünscht.
Du solltest schon hergehen und da irgendetwas mit "IF ... THEN ... ELSE ... END IF" programmieren.

Gruß
Larry
 
habe folgendes gemacht

Habe jetzt folgenden code aber es ist immer noch das gleiche Phänomen, aber jetzt dürfte er doch nach nem fehler nie mehr zu den befehlen kommen.

Code:
On Error Resume Next
        For i = 0 To spalten
            
                If Err = 0 Then
                    SmartTags("zaehler") = "Fehler in Zeile " & aktuelle_Zeile & ", Parameter " & i+1
                    MyArray1(arrayelement) = field(i)
                    arrayelement = arrayelement + 1
                Else
                    'On Error GoTo 0
                End If                            
        NEXT
 
Der Error, auf den sich die Error-Auswertung von VB-Script bezieht ist ein Syntax-Error der Programmierung (z.B. einen Datei-Zugriff auf eine Datei, die es nicht gibt oder eine Division durch 0 oder oder).

Das was du als Fehler ansiehst ist für Flex nur eine Bedingung wie irgendeine andere Variable von Flex.

Gruß
Larry
 
... definiere mal den Begriff Fehler - bezogen auf irgendeine deiner Variablen, die du in Flex definiert hast - von mir aus auch die Bit-Meldungen ...
 
Ok

Naja wie du oben im code sehen kannst, schreibe ich aus dem field etwas ind das Array, wenn in dem field jetzt z.B. 11,5a steht (a wurde ausversehen durch den benutzer eingetragen), dann kann ich diesen wert ja nicht dem realarray zuweisen. jetzt soll dies als fehler deklariert werden. Müsste den also irgendwie auf real abfragen oder so
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sorry Benson ...
wenn ich aus deinem obigen Code hätte etwas ableiten können dann hätte ich es (ganz sicher) aufgegriffen.
Leider macht es mir dein letztes Statement nun auch nicht leichter - ich weiß immer noch nicht so richtig, was du vorhast.
Da ich schon etwas betagter bin finde ich Beispiele (oder Beispiel-Erklärungen) immer recht hilfreich ...
 
also wenn du prüfen willst ob das eine real-variable ist, dann definiere diese variable für die eingabe so. dann kann überhaupt keine falsche variable dort drin stehen.

oder z.b. so
PHP:
on error resume next
test= "11.5a"
test1 = test * 1
msgbox  err.number &chr(13)& err.Description
 
Hab ich nicht verstanden

Sorry, das verstehe ich nicht.

@ Larry Also ich habe folgendes vor:

Ich habe ein Array, welches Realelemente enthält.

ich lesen eine csv datei ein. jetzt möchte ich die einzelnen daten der csv dem array zuweisen. natürlich kann es ja jetzt einmal vorkommen, dass durch einen schreibfehler ein buchstabe oder so in die datei gelangt. nun würde ich dies gerne abfangen. und einen string ausgeben, bei welchem parameter dieser fehler aufgetreten ist. und an dieser stelle das script beenden. geht das irgendwie. bzw. konnte ich dir mein Problem etwas klarer darstellen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
genau das macht der von mir gepostete code doch.
die variable test ist dein eingelesener string

der eingelesene wert wird mit 1 multipliziert. dies kann nur erfolgreich sein wenn es eine zahl ist. enthält der string buchstaben so wird error 13 erzeugt.
 
@Volker:
... wobei ja die Eingabe 0.0 auch existieren kann und ja kein Fehler wäre.
Darüber hinaus bräuchtest du ja auch kein Error-Event erzeugen, da der TE das ja verarbeiten will ...

@Benson:
Die Abfrage ob ein Zeichen, das nicht hineingehört mit drinsteht ist problematisch. Es gibt natürlich einen Befehl, mit dem du überprüfen kannst, ob ein bestimmtest Zeichen oder auch eine Zeichenkette beinhaltet ist und wo sie steht aber es gibt (auf einfache Weise) nichts, das auf "isNumeric" überprüft und dabei dann vielleicht auch gleich noch "isInRange".
Wo kommen die Werte denn her ? Kannst du nicht dort sicherstellen, dass die Werte "sinnvoll" und korrekt sind ?

Gruß
Larry
 
@Volker:
... wobei ja die Eingabe 0.0 auch existieren kann und ja kein Fehler wäre.
Darüber hinaus bräuchtest du ja auch kein Error-Event erzeugen, da der TE das ja verarbeiten will ...
den error event hab ich nur reingeschrieben, damit er sieht was passiert.
ohne den error-event bricht das script ab. aber er will doch eine meldung ausgeben wo's passiert ist.
also könnte er das so machen
if err.number >0 then
...
end if
@Benson:
Die Abfrage ob ein Zeichen, das nicht hineingehört mit drinsteht ist problematisch. ... Kannst du nicht dort sicherstellen, dass die Werte "sinnvoll" und korrekt sind ?
mit einer schleife und der InStr-Funktion könnte man jedes zeichen prüfen. ist dann aber schon aufwendiger.

eben er sollte sicherstellen das da sinnvolle werte drinstehen.
die frage ist eben wie kommen die daten in die datei.
 
Zurück
Oben