demian
Goto Top

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

Content-Key: 92802

Url: https://administrator.de/contentid/92802

Printed on: April 26, 2024 at 15:04 o'clock

Mitglied: 60730
60730 Jul 24, 2008 at 16:07:27 (UTC)
Goto Top
Servus,

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
Gruß
Member: JJKix
JJKix Sep 12, 2008 at 18:39:16 (UTC)
Goto Top
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