Fragen zu VB

Lautsprecher

Erfahrenes Mitglied
Seruvs an alle erstmal,

ich habe demnächst in vb ne wichtige Prüfung und dabei arbeite ich gerade alte Prüfungen meines Profs durch und da sind nochein paar Fragen offen geblieben. Ich stelle die einfach mal zusammengefasst hier rein, wäre toll, wenn ich zu der einen oder anderen Frage noch ne Antwort von euch bekommen würde :)

Also Vielen Dank schon mal...

1) Kann in VB ein Unterprogramm sich selbst aufrufen?

2) Kann man über eine Textbos ohne nachfolgende Datenkonvertierung nur String-Daten einlesen.

3) Gibt das folgende Programmstück gibt den Wert 100 aus?
Code:
i = 50
FOR i = 0 to 100
DO UNTIL i = 99
i = i + 1
Loop
Next i

msgbox i

BIsher denke ich nein, aber selbst wenn ich es direkt programmiere kommt bei mir nur ein Laufzeitfehler (!?)

4) Spricht man von einer Endlosschleife, wenn die Schleife mehr als 1.000.000 mal durchlaufen wird? (Wenn ich ne Endlosschleife programmiere (i=0 to 100 000) bekomme ich so ab der Zahl 440.000 nen Überlauf-Fehler)

5) Muss man um eine Seite mit dem Printer-Objekt ausdrucken zu können, mindestens einmal die Prindter.Enddoc-Methode im Programm programmieren?

Vielen Dank

ciao
 
Zuletzt bearbeitet:
zu 1) was Meinst du mit "Unterprogramm"? Meinst du damit eine Sub/Funktion? Wenn ja, dann geht das. Eine Prozedur kann sich selbst aufrufen, das nennt sich dann Rekursive Programmierung.

zu 2) Hä?
zu 3) Dieser Code macht keinen Sinn. Aber es passiert folgendes:
  • zuerst wird die Do-Until-99-Schleife durchlaufen, danach hat i den Wert 100 (würdest du die Until-Bedingung am Ende der Schleife platzieren, dann hätte i nur den Wert 99)
  • Dann wird die For-To-Schleife ein zweites mal durchlaufen und die Do-Until-99-Schleife wird auch ein zweites "betreten". Allerdings ist i bereits 100 und kann somit nicht mehr 99 werden. -->Du hast eine Endlosschleife. Der Laufzeitfehler kommt zustande, wenn i seinen maximalen Wert erreicht hat (bei Integer ist das 32767
  • VB bietet gute Debug-Mittel (beispielsweise jede Zeile einzeln mit F8 durchgehen), damit hättest du das auch selber herausfinden können!
zu 4) Man spricht von einer Endlosschleife, wenn eine Schleife gar nicht mehr verlassen wird. Wenn eine Schleife nur 100.000 mal durchläuft, dann wird sie ja irgendwann verlassen.

zu 5) Ich denke schon, denn das Printer-Objekt weiß ja nicht wann du mit der Erstellung deines Drucks fertig bist.
 
Lautsprecher hat gesagt.:
Seruvs an alle erstmal,
2) Kann man über eine Textbox ohne nachfolgende Datenkonvertierung nur String-Daten einlesen.
Grundsätzlich kommt aus einer TextBox immer nur Text. Da die Standardeigenschaft .Text vom Typ String ist.
Soll nun z.B. einen Zahl eingelesen werden ist es nur über eine Typkonvertierung möglich.
Weisst man allerdings einer Variablen von einem anderen Typ den Inhalt einer Textbox zu, versucht VB den Inhalt automatisch zu konvertieren. Das ganze nennt sich "Implizite Typkonvertierung" im gegensatz zur "expliziten Typkonvertierung".
Beispiel:
Code:
Dim Zahl as Integer
Zahl = EingabeTextBox.Text
Das funktioniert so lange, wie die Eingabe in einen Integer konvertiert werden kann, ansonsten erhält man einen Laufzeitfehler. Daher sollte man zumindest vorer die Funktion IsNumeric oder entsprechend bei Datumsangaben IsDate() verwenden.
Was nun genau passiert, wenn man eine Kommawert eingibt und dieser dann der Integervariablen zuweist, kann ich nur raten. Ich schätze er meldet keinen Fehler und schneitet die Kommastellen ab.
Ob, nun ein Komma oder Punkt als Dezimaltrennzeichen interpretiert werden hängt von Landeseinstellung des Betriebssystems ab.

So, ich kann die Frage nicht eindeutig mit Ja oder Nein beantwortet, aber vielleicht helfen Dir meine Ausführungen sie zu beantworten.
Ich denke die Anwort hängt davon ab, wie man "nachfolgend" interpretiert.
 

Neue Beiträge

Zurück