PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Typische Fehler in (VB-)Programmen


Huabaer
2007-03-30, 20:45:25
Hallo allerseits,

ich habe letztens mein erstes komplexeres Programm (ca. 180 Zeilen) in VisualBasicScript geschrieben. Da die ordnungsgemäße Funktion sehr wichtig ist, nehme ich dafür eine längere Testphase von mehreren Wochen in Anspruch. Doch zu allererst will ich wissen, ob es vielleicht im Internet irgendwo Infos oder eine Liste gibt, was so die populärsten Programmfehler sind, die Laufzeitfehler o.ä. verursachen. Ich meine damit zum Beispiel so Sachen wie, dass das Programm nach einer Datei sucht, die nicht existiert und dann einen Laufzeitfehler verursacht. Lauter so Dinge eben...

Gruß
Christoph

EDIT: Übrigens, kennt irgendwer von euch eine Sleep- oder Wait-Funtion für VBS?

No.3
2007-03-30, 21:00:15
komplexeres Programm (ca. 180 Zeilen)

lol !?


nehme ich dafür eine längere Testphase von mehreren Wochen in Anspruch.

lol !?

okay, nun glaube ich es, ein nahezu fehlerfreies Windows wäre in 1000 Jahren nicht fertig...


Edit: poste doch mal den langen langen Quelltext, vielleicht finden sich ja auch so schon ein paar Fehler ;)

Johnny Rico
2007-03-30, 21:20:57
Ganz toll Nummer 3! solche Leute braucht man in jedem Forum!

Monger
2007-03-30, 21:31:18
Uff... es GIBT Untersuchungen zu diesem Thema, aber ich weiß nicht ob die öffentlich zugänglich sind.

Ich weiß nur, dass eines der häufigsten Probleme irgendwelche Iterationen sind., also dass eine Schleife entweder nicht vollständig über eine Menge von etwas läuft, oder zu weit.

Dann natürlich booleesche Ausdrücke. Mit and/or/not kommen viele durcheinander.

Juerg
2007-03-30, 22:02:09
Naja "populäre" Fehler... Ich weiss nicht :| Schliesst sich irgendwie aus.

Fehler auf die man während der Laufzeit eine Meldung bekommt sind sehr dankbare Fehler. Die können kurzfristig und zuverlässig gelöst werden.

Grobe ungesehene Schnitzer kann man Umengen machen mit VBScript. Als erste Linie solltest Du immerOption Explicitverwenden. Das schützt zumindest vor der Verwendung nicht deklarierter Variablen. Bei einem simplen Typo ist der Wert einer Variable nicht der den Du erwartest und es wird Dir nicht mal mitgeteilt, dass diese eine neue noch nicht verwendete Variable ist.

Dann sind ganz schwer auffindbare Fehler die solchen bei denen Instanzen von Objekten (Klassen) verwendet werden bei denen ein .Open oder .Attach oder .Connect verwendet wird. Man sollte da schon genau in der Dokumentation nachschlagen, ob ein .Close, .Detach oder ein .Disconnect verwendet werden muss usw...

Ich meine damit zum Beispiel so Sachen wie, dass das Programm nach einer Datei sucht, die nicht existiert und dann einen Laufzeitfehler verursacht. Lauter so Dinge eben...Dateien zu verwenden ohne zu prüfen ob Zugriff darauf besteht sollte man sowieso tunlichst vermeiden. Es empfiehlt sich, dies bei jedem Zugriff zu überprüfen. Da Netzwerkresourcen abgehängt werden könnnen (auf der Seite auf der Du keine Kontrolle darüber hast), Memory-Sticks können herausgezogen werden.. usw...

Übrigens ;) Google first Hit(s):

die häufigsten Fehler in VBScript
http://www.google.ch/search?hl=de&q=die+h%C3%A4ufigsten+Fehler+in+VBScript&meta=

Malabolge
2007-03-31, 11:42:26
Pause :

Declarieren im Haupt Prog
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
' Pause von X Millisekunden - X/1000 Sekunden


Ausführung :

Sleep (x) - x gleich zeit in millisekunden , 1000 = 1 sek

Juerg
2007-04-01, 20:29:15
Pause :

Declarieren im Haupt Prog
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
' Pause von X Millisekunden - X/1000 Sekunden


Ausführung :

Sleep (x) - x gleich zeit in millisekunden , 1000 = 1 sekGehört dies hierhin :confused:
http://www.forum-3dcenter.org/vbulletin/showthread.php?t=356151

Gast
2007-04-04, 22:03:52
Pause :

Declarieren im Haupt Prog
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
' Pause von X Millisekunden - X/1000 Sekunden


Ausführung :

Sleep (x) - x gleich zeit in millisekunden , 1000 = 1 sek

Kann ich sowas auch in VBS machen?

Der_Donnervogel
2007-04-05, 10:02:27
Pause :

Declarieren im Haupt Prog
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
' Pause von X Millisekunden - X/1000 Sekunden


Ausführung :

Sleep (x) - x gleich zeit in millisekunden , 1000 = 1 sek
1. Funktioniert das in VBS nicht
2. Gibt es dafür eine einfachere Möglichkeit

wscript.sleep 1000

Wartet genau eine Sekunde.

Ralf2209
2007-04-05, 11:08:12
Ich verwende gerne dir Try/Catch Anweisung.
Damit können Fehler auch ganz gut abgefangen werden. Also z.B. die Suche nach einer Datei in die Try Anweisung. Sollte das dann Fehlschlagen kann mit der Catch Anweisung eine Fehlermeldung ausgegeben werden. Das Programm wird dann nicht beendet.

http://msdn2.microsoft.com/de-de/library/fk6t46tz(VS.80).aspx

Gast
2007-04-05, 11:22:27
Typische Fehler gibt es nicht. Meist sind es irgendwelche Rechtschreibfehler. Wenn es sich kompilieren lässt, dann ist meiner Meinung nach die beste Methode: Try and Error Methode. Probiere sämtliche Szenarien aus. (So machen es die großen Firmen doch auch inzwsichen (Vista Beta, Linux Beta, Spiele Beta :-D )

Der_Donnervogel
2007-04-05, 11:29:55
Der Threadstarter redet hier über VisualBasicScript, da gibt es kein try-catch. Die verlinkte Referenz ist für Visual Basic 2005, aber VBS ist eher mit Visual Basic 6 zu vergleichen (außer es gibt jetzt beim Windows Vista eine neue VBS-Version, wozu ich mangels Vista nichts sagen kann), bzw. unterstützt nicht einmal den kompletten Befehlsumfang von VB6, geschweige denn so Sachen wie try-catch. Da macht man Fehlerbehandlung mit On Error Resume/GoTo 0 (http://www.asphelper.de/referenz/vbscript/On_Error.asp)

wori
2007-04-05, 13:01:01
Generell zu fehlerhafter Programmierung:
Steve McConnell, Codecomplete, Microsoft Press.
Ein sehr gutes Buch über strukturierte Softwareerstellung.
Viel Spaß

FlashBFE
2007-04-05, 17:05:05
Generell zu fehlerhafter Programmierung:
Steve McConnell, Codecomplete, Microsoft Press.
Ein sehr gutes Buch über strukturierte Softwareerstellung.
Viel Spaß

Bei Programmen in seinem Format braucht er doch keine dicken Wälzer.

Er muss nur die On Error Goto Syntax und das Err Objekt sinnvoll benutzen, mehr Fehlerbehandlung braucht man nicht.

Ansonsten gilt: Versuch macht kluch. ;)

wori
2007-04-06, 13:39:24
Bei Programmen in seinem Format braucht er doch keine dicken Wälzer.
Naja schaden kanns nicht und ich finde es läßt sich gut lesen.

Ansonsten: Die Bundesminsiterin für Gesundheit: Lesen schadet ihrer Dummheit!:biggrin: