Error handling
Moin,moin alle zusammen,
ich fange gerade an, mich mit KixScript auseinander zu setzen und habe schon das erste Problem, bei dem ich weder in der Forumsuche noch mit Google wirklich weiterkam.
Wie setzt man @16034 zurück? Wenn ich zum Beispiel folgenden Code habe:
cd C:\Temp
If @16034 = 0
del C:\Temp\
else
Messagebox(@error,"Test")
EndIf
Messagebox(@error,"Test")
wird bei der 1. msgbox Fehler Nr. 2 angezeigt (Pfad nicht vorhanden). Bei der 2. wird jedoch Fehler Nr. 1 angezeigt??? Also wird @16034 ja nicht zurückgesetzt, oder? Das hätte für spätere @16034 Abfragen ja dramatische Folgen. Ich habe im Netz einige Scripte gesehen, aber in keinem wird @16034 zurückgesetzt.
Gruß
Demian
ich fange gerade an, mich mit KixScript auseinander zu setzen und habe schon das erste Problem, bei dem ich weder in der Forumsuche noch mit Google wirklich weiterkam.
Wie setzt man @16034 zurück? Wenn ich zum Beispiel folgenden Code habe:
cd C:\Temp
If @16034 = 0
del C:\Temp\
else
Messagebox(@error,"Test")
EndIf
Messagebox(@error,"Test")
wird bei der 1. msgbox Fehler Nr. 2 angezeigt (Pfad nicht vorhanden). Bei der 2. wird jedoch Fehler Nr. 1 angezeigt??? Also wird @16034 ja nicht zurückgesetzt, oder? Das hätte für spätere @16034 Abfragen ja dramatische Folgen. Ich habe im Netz einige Scripte gesehen, aber in keinem wird @16034 zurückgesetzt.
Gruß
Demian
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 92802
Url: https://administrator.de/contentid/92802
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
2 Kommentare
Neuester Kommentar
Servus,
mit @16034 arbeite ich nicht gerne.
Damit kannst du @16034 "elegant" Umgehen.
"dein Problem" ist die Abfrage ansich - @16034 ist "aktuell und muß nicht "zurückgesetzt werden - kann aber:
Du fragst einfach etwas ab, das garantiert 0 zurückliefert.
Gruß
mit @16034 arbeite ich nicht gerne.
If Exist ("C:\temp\")
del "C:\temp\*.*"
EndIf
Messagebox(@error,"Test")
Damit kannst du @16034 "elegant" Umgehen.
"dein Problem" ist die Abfrage ansich - @16034 ist "aktuell und muß nicht "zurückgesetzt werden - kann aber:
Du fragst einfach etwas ab, das garantiert 0 zurückliefert.
if existkey( "HKEY_CURRENT_USER\" ) <> "0"
endif
Messagebox(@error,"HKCU")
Messagebox(@error,"Tempo4")
if existkey( "HKEY_CURRENT_gibtsnicht\" ) = "1"
Messagebox(@error,"HKCX")
endif
Hallo,
mit @16034 zu arbeiten macht schon Sinn und dieses Makro kann nur abgefragt und nicht zurückgesetzt werden.
hier meine Lösung für das obere Beispiel:
Dim $Error
CD "C:\Temp"
$Error = @16034
If $Error = 0
Del "C:\Temp\*.*"
Else
; Da MessageBox eine Funktion ist, gibt diese auch einen wert zurück.
; Deshalb immer mit Zuweisung arbeiten
$ = MessageBox($Error,"Test")
EndIf
If Messagebox($Error,"Test") EndIf
Sicherlich macht es Sinn, sich nach der Existenz des Verzeichnisses vorher zur erkundigen:
If Exist("C:\Temp")
Del "C:\Temp\*.*"
$Error = @16034
$Descr= @serror
If $Error = 0
If MessageBox("erfolgreich", "Löschen") EndIf
Else
If MessageBox("nicht erfolgreich" + @crlf + @crlf + "Fehler " + $Error + " " + @serror, "Löschen") EndIf
EndIf
Else
; Verzeichnis existiert nicht
If MessageBox("Verzeichnis 'C:\Temp' existiert nicht", "Löschen") EndIf
EndIf
mit @16034 zu arbeiten macht schon Sinn und dieses Makro kann nur abgefragt und nicht zurückgesetzt werden.
hier meine Lösung für das obere Beispiel:
Dim $Error
CD "C:\Temp"
$Error = @16034
If $Error = 0
Del "C:\Temp\*.*"
Else
; Da MessageBox eine Funktion ist, gibt diese auch einen wert zurück.
; Deshalb immer mit Zuweisung arbeiten
$ = MessageBox($Error,"Test")
EndIf
If Messagebox($Error,"Test") EndIf
Sicherlich macht es Sinn, sich nach der Existenz des Verzeichnisses vorher zur erkundigen:
If Exist("C:\Temp")
Del "C:\Temp\*.*"
$Error = @16034
$Descr= @serror
If $Error = 0
If MessageBox("erfolgreich", "Löschen") EndIf
Else
If MessageBox("nicht erfolgreich" + @crlf + @crlf + "Fehler " + $Error + " " + @serror, "Löschen") EndIf
EndIf
Else
; Verzeichnis existiert nicht
If MessageBox("Verzeichnis 'C:\Temp' existiert nicht", "Löschen") EndIf
EndIf