Brauche Hilfe bei Visual Basic!

S

Benutzer

Gast
Seid gegrüßt. Kommende Woche schreiben wir in Programmieren eine Klassenarbeit, dabei müssen wir ein Programm erstellen, d. h. wir müssen lediglich die Codierung auf's Papier bringen, also keine PC-Anwendung.
Da unser Lehrer der Administrator der Schule und gleichzeitig ein riesen Arschloch ist, hab ich jetzt ziemlich wenig Stoff mit dem ich lernen könnte und dem Unterricht dieses Affen zu folgen, fällt mir auch merklich schwer. Deshalb meine Frage. Könntet ihr mir ein paar Seiten nennen auf denen VB gut erklärt wird, so mit Aufzählungen von Variablen und dem ganzen Krimskrams. Seiten auf niedriegem Niveau werden bevorzugt, bin in VB ein absolutes Greenhorn.
 

Benutzer27284 

Verbringt hier viel Zeit
Was musst du denn wissen? Leider fehlt mir die Zeit, die 1.000-Seitigen Bücher zu scannen, aber was willst du wissen? (Eigentlich mach ich seit Jahren kein VS mehr, aber Programmieren-Basics werde ich noch erklären können)
 
S

Benutzer

Gast
Schwer zu sagen. Ich bin eben totaler Anfänger. Mach das ganze erst seit September 2004. Ich hau einfach mal die Codierung von 'ner Aufgabe rein, die wir vor den Ferien gemacht haben. Ich hoffe du kannst dir das ganze ohne Form vorstellen.
Option Explicit
Dim m_zahl, m_multi, m_produkt as Integer

Private Sub prz_berechnen
m_produkt = 0
m_multi = Int(m_von.text) - 1
do while m_multi < Int(m_bis.text)
m_multi = m_multi + 1
m_produkt = m_multi*m_zahl
lf_list. AddItem Format(m_multi,"###")+" * " + Format(m_zahl,"##
#")+ "=" + Format(m_produkt,"###")

Loop

bs_neu.setfocus

End Sub


Private Sub bs_ende_click
End
End Sub

Private Sub bs_neu_click()
if_zahl.text = ""
m_von.text = ""
m_bis.text = ""
lf_list.clear
m_von.setfocus
End Sub

Private Sub Form_Load()
tf_zahl.text = ""
tf_zahl.tabindex = 0
m_von = ""
m_von.tabindex = 0
m_bis = ""
m_bistabindex = 1
End Sub

Private Sub tf_bis_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If IsNumeric(tf_bis.text) Then
m_bis = Int(tf_bis.text)
tf_zahl.setfocus
Else
Msgbox "Nur Zahlen eingeben", 48, "Fehler"
tf_bis = ""
TF_bis.setfocus
End If
End If
End Sub

Private Sub tf_von_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If IsNumeric(tf_von.text) Then
m_von = Int(tf_von.text)
tf_bis.setfocus
Else
Msgbox "Nur Zahlen eingeben", 48, "Fehler"
tf_von = ""
tf_von.setfocus
End If
End If

End Sub

Private Sub tf_zahl_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If IsNumeric(tf_zahl.text)Then
m_zahl = Int(tf_zahl.text)
prz_berechnen
bs_neu.setfocus
Else
Msgbox "Nur Zahlen eingeben", 48, "Fehler"
tf_zahl.text = ""
tf_zahl.setfocus
End If
End If
End Sub
 

Benutzer2610 

Meistens hier zu finden
Ekelhafter Code :zwinker:
Was möchtest du denn dazu wissen?
 
S

Benutzer

Gast
Ich würde gerne wissen was das bedeutet. Wie gesagt, ich steig da absolut nicht durch. Ich sitz im Unterricht und schreib mir die ganzen Codierungen ab. Was ich da allerdings abschreibe bleibt mir ein Rätsel.
 

Benutzer2610 

Meistens hier zu finden
Ah, OK. Also nehmen wir das ganze mal auseinander (ich kann kein Wort VB aber passt schon :zwinker:)

Code:
Dim m_zahl, m_multi, m_produkt as Integer
Hier werden 3 Variablen m_zahl, m_multi und m_produkt vom Typ Integer deklariert.
Integer werden für Ganzzahlen verwendet und sind auf heutigen Systemen 32 Bit groß.

Code:
Private Sub prz_berechnen
Dies ist der Kopf einer Funktion mit dem Namen prz_berechnen.
In VB werden Funktionen als Subs bezeichnet.

Code:
m_multi = Int(m_von.text) - 1
m_von ist vmtl. der Name eines Texteingabefeldes. Dieser Code weist der Variablen m_multi die Zahl in diesem Feld abzüglich 1 zu.
Da ein Texteingabefeld Text enthält (und keine Zahl) findet mit Hilfe von Int() eine Typumwandlung statt.

Code:
do while m_multi < Int(m_bis.text)
m_multi = m_multi + 1
m_produkt = m_multi*m_zahl
lf_list. AddItem Format(m_multi,"###")+" * " + Format(m_zahl,"##
#")+ "=" + Format(m_produkt,"###")
Loop
Dies ist eine Schleife - der eingetliche Arbeitsteil von prz_berechnen.
Die Schleife wird solange ausgeführt wie der Inhalt von m_multi kleier ist als die Zahl im Textfeld m_bis (man beachte wieder die Typumwandlung mit Int()).
Die Schleife macht nun folgendes:
m_produkt wird berechnet als m_multi * m_zahl;
Danach wird das berechnete Produkt in das Listenfeld mit dem Namen lf_List geschrieben.
Unz war als Text
m_multi * m_zahl = m_produkt,
Da ein Listenfeld nur Texst aufnimmt, diese Variablen aber wie oben erwähnt Integer (Ganzzahlen) sind müssen sie entsprechend formatiert werrden. Dafür ist Format() zuständig.

Code:
bs_neu.setfocus
Irgendeinem Control auf dem Form welches auf den Namen bs_neu hört wird der Eingabefocus zugewiesen (ist vmtl. ein Button).

Code:
End Sub
Hier endet prz_berechnen

Die restrlichen Funktionen dienen der Initialisierung der Eingabefelder und der Fehlerüberprüfung der Eingabe (damit da auch wirklich nur Zahlen drin stehen).
 

Benutzer26196  (33)

Verbringt hier viel Zeit
Kirby schrieb:
Ah, OK. Also nehmen wir das ganze mal auseinander (ich kann kein Wort VB aber passt schon :zwinker:)

Code:
Dim m_zahl, m_multi, m_produkt as Integer
Hier werden 3 Variablen m_zahl, m_multi und m_produkt vom Typ Integer deklariert.
Integer werden für Ganzzahlen verwendet und sind auf heutigen Systemen 32 Bit groß.

Kleine Korrektur:

Bei der oben stehenden Deklaration wird nur m_produkt als Integer (Zahl) dekladiert, m_zahl und m_multi hingeben sind "Variants".

Wenn alle 3 Variablen als Integer dekladiert werden sollen, müsste es so aussehen:

Code:
Dim m_zahl as Integer, m_multi as Integer, m_produkt as Integer

Normalerweise, macht es aber keinen Unterschied, aber nur so zur Verständlichkeit *klugscheiß*.

@Kirby:
Schon gut, kannst ja kein VB :engel:
 

Benutzer2610 

Meistens hier zu finden
VB hat ne bescheuerte Syntax ^.^

Ist doch total umständlich wenn man bei jeder Variablen den Typ angeben muss.
Naja, what shells.
 

Benutzer20202 

Verbringt hier viel Zeit
I)4wN schrieb:
Kleine Korrektur:

Bei der oben stehenden Deklaration wird nur m_produkt als Integer (Zahl) dekladiert, m_zahl und m_multi hingeben sind "Variants".
Bist Du Dir da 100% sicher? Ich meine mich aus meinen Basic-Tagen zu erinnern, dass man mehrere durch Komma getrennte Variablen gemeinsam deklarieren kann. Und VB dürfte nicht so viel an den Basic-Konventionen gedreht haben. Zumal es auch irre dämlcih wäre.
 
S

Benutzer

Gast
Trogdor schrieb:
Bist Du Dir da 100% sicher? Ich meine mich aus meinen Basic-Tagen zu erinnern, dass man mehrere durch Komma getrennte Variablen gemeinsam deklarieren kann. Und VB dürfte nicht so viel an den Basic-Konventionen gedreht haben. Zumal es auch irre dämlcih wäre.
Ich mein auch, dass man durch Komma getrennte Varibalen gemeinsam deklarieren kann. Naja, egol.
Danke jedenfalls für die Hilfe.
 
A

Benutzer

Gast
Also in VB werden gleichartige Variablen mit Kommas deklariert.
Mit INteger-Werten ist das schlecht zu erklären (da der INHALT der Variable gleich ist, ob Integer oder Variant, man kann es eh umformatieren), machen wirs mit Objektvariablen: wenn ich schreibe

dim rs, rs2, rs3 as recordset

dann werden rs UND rs2 UND rs3 also Objektvariablen vom Typ Recordset deklariert und nicht das rs und rs2 mit einem mal Variants sind. Wäre dem so, müsste bei (ADO)

set rs = db.openrecordset("SELECT...."

stets ein Fehler kommen....


Okay zum Code, ohne Formular etwas schwierig,deshalb Mutmaßungen:

es gibt 3 Eingabefelder (tf_von - tf_bis - tf_zahl) und eine ComboBox namens If_List

wenn prz_Berechnen aufgerufen wird:
- der Wert m_produkt wird 0 gesetzt
- m_multi wird auf den Wert m_von - 1 gesetzt (warum eigentlich?)
- dann eine Schleife, sooft druchführen bis diese Bedingung erfüllt ist: m_multi < m_bis
- m_multi inkrementieren (+1 Rechnen)
- m_produkt = m_multi*m_Zahl
- Eintrag in Comboox einen String: "Multi * Zahl = Produkt"

- fertig

was das tun soll ist mir allerdigns schleierhaft, letzten Endes erhält man eine Liste nach der ARt (man nehme 5 Durchläufe und die M_zahl = 5):
001 * 005 = 005
002 * 005 = 010
003 * 005 = 015
004 * 005 = 020
005 * 005 = 025

Ich nehme an, die Übung soll demonstrieren was man mit Schleifen machen kann...
Also ohne Sinn und Verstand.
Wenn du Fragen hast kannst du dich auch gern per PN an mich wenden, ich programmiere (e)VB[A] von Berufswegen aus so ziemlich den ganzen Tag

Übrigens: Namenskonventionen sind ne Feine Sache, erleichtern das für den Außenstehenden ungemein (z.B. sollte ne ComboBox nicht if_list sonder cboIf_list heißen, oder nicht m_zahl sondern iM_Zahl weil Integer, nur so als Tipp am Rande)

Gruß
André
 
H

Benutzer

Gast
Könnten die zarten Anfängen vom Erathostenes Sieb sein.
Wäre allerdings einfach, wenn man die Zahlen nicht von Hand reinschreiben
müsste,
und wenn der Wertebreich in nem Feld stehen würde.

ODER :
"prz" steht für Produktzahlen oder sowas.
Dann isses wirklich nur ne ziemlich langweilige "Demo".
 
Oben
Heartbeat
Neue Beiträge
Anmelden
Registrieren