Hallo Leute,
ich muss bis Samstag ein Projekt fertig bekommen. Recht ergeiziges Ziel hab ich mir dabei ausgesucht^^
Vorweg ein paar Infos was es werden soll:
Ich bastel ein Programm, welches einige Zahlen speichern und in einem mehrzeiligen Textfeld ausgeben soll. Diese Zahlen werden anschließend (und wirklich erst nach einiger Zeit) weiterverwendet um diverse Berechnungen durchführen zu können, welche auf Knopfdruck aktiviert werden.
Mit den Berechnungen komme ich klar, das ausgeben in das Textfeld ist auch kein Problem. Nur das speichern in einen Array hat absolut nicht funktioniert, es hakt immer da, wo der Wert in den Array soll...
Also habe ich es mit den Arrays wieder aufgegeben und probierte es auf "herkömmliche Weise", wo ich nun bei der Inkrementierung hängen bleibe (also beim speichern von mehr als einem Wert pro Variable).
Folgender Aufbau soll stattfinden:
Es gibt drei Eingabefelder, in denen nacheinander Unterschiedliche Werte eingetragen werden. Nach aktivierung des Ersten Buttons (Koordinateneingabe) folgendes Beispiel:
Punktnummer (pnr) | Rechtswert (sngy) | Hochwert (sngx)
Durch "Entern" soll der jeweilige Wert der entsteht, zB: pnr = 100 | sngy = 2000 | sngx = 2000 abgespeichert werden. Danach kommt die nächste Zeile, zB pnr= 101 | sngy = 2153,23 | sngx = 1823,453.
Wenn ich so einige Punkte in meiner Koordinatendatei drin habe, möchte ich für Neue Punktnummern über Winkel (snghz) und Strecke (sngs) die Koordinaten berechnen.
Doppelt eingetippte Punktnummern sollen automatisch erkannt werden und mir anbieten können, ob ich den alten Wert behalten möchte, den neuen oder ob es gemittelt werden soll. Dabei wird über Pythagoras eine Koordinatendifferenz angezeigt werden.
Ich muss also gezielt von Punktnummer 100 zB den Rechtswert sowie Hochwert auslesen können wenn ich nur die Punktnummer 100 eingebe, die Koordinaten soll er sich im Hintergrund in einer neuen Variable (ye und ya sowie xe und xa zB) abspeichern.
Für euch sicherlich einfach, für mich allerdings ziemlich schwer :wacko: als Laie.
Punktnummern sind ganze Zahlen, Winkel mit vier Nachkommastellen, alle anderen Werte mit drei Nachkommastellen. Die Ausgabe soll stets einheitlich quasi rechtsbündig im Textfeld ausgegeben werden, Komma über Komma! Eingaben ohne Nachkomma sollen mit Nullen aufgefüllt werden, damit alles einheitlich aussieht...
Aber hier erstmal der verbesserungswürdige Code^^ Ich hoffe ihr versteht wo mein Problem liegt und könnt mir helfen!
ich muss bis Samstag ein Projekt fertig bekommen. Recht ergeiziges Ziel hab ich mir dabei ausgesucht^^
Vorweg ein paar Infos was es werden soll:
Ich bastel ein Programm, welches einige Zahlen speichern und in einem mehrzeiligen Textfeld ausgeben soll. Diese Zahlen werden anschließend (und wirklich erst nach einiger Zeit) weiterverwendet um diverse Berechnungen durchführen zu können, welche auf Knopfdruck aktiviert werden.
Mit den Berechnungen komme ich klar, das ausgeben in das Textfeld ist auch kein Problem. Nur das speichern in einen Array hat absolut nicht funktioniert, es hakt immer da, wo der Wert in den Array soll...
Also habe ich es mit den Arrays wieder aufgegeben und probierte es auf "herkömmliche Weise", wo ich nun bei der Inkrementierung hängen bleibe (also beim speichern von mehr als einem Wert pro Variable).
Folgender Aufbau soll stattfinden:
Es gibt drei Eingabefelder, in denen nacheinander Unterschiedliche Werte eingetragen werden. Nach aktivierung des Ersten Buttons (Koordinateneingabe) folgendes Beispiel:
Punktnummer (pnr) | Rechtswert (sngy) | Hochwert (sngx)
Durch "Entern" soll der jeweilige Wert der entsteht, zB: pnr = 100 | sngy = 2000 | sngx = 2000 abgespeichert werden. Danach kommt die nächste Zeile, zB pnr= 101 | sngy = 2153,23 | sngx = 1823,453.
Wenn ich so einige Punkte in meiner Koordinatendatei drin habe, möchte ich für Neue Punktnummern über Winkel (snghz) und Strecke (sngs) die Koordinaten berechnen.
Doppelt eingetippte Punktnummern sollen automatisch erkannt werden und mir anbieten können, ob ich den alten Wert behalten möchte, den neuen oder ob es gemittelt werden soll. Dabei wird über Pythagoras eine Koordinatendifferenz angezeigt werden.
Ich muss also gezielt von Punktnummer 100 zB den Rechtswert sowie Hochwert auslesen können wenn ich nur die Punktnummer 100 eingebe, die Koordinaten soll er sich im Hintergrund in einer neuen Variable (ye und ya sowie xe und xa zB) abspeichern.
Für euch sicherlich einfach, für mich allerdings ziemlich schwer :wacko: als Laie.
Punktnummern sind ganze Zahlen, Winkel mit vier Nachkommastellen, alle anderen Werte mit drei Nachkommastellen. Die Ausgabe soll stets einheitlich quasi rechtsbündig im Textfeld ausgegeben werden, Komma über Komma! Eingaben ohne Nachkomma sollen mit Nullen aufgefüllt werden, damit alles einheitlich aussieht...
Aber hier erstmal der verbesserungswürdige Code^^ Ich hoffe ihr versteht wo mein Problem liegt und könnt mir helfen!
VB.NET-Quellcode
- Public Class Form1
- Dim strcredits As String
- Dim pnri, hzi, si, yi, xi, pnr, koordeini, polari, abstki, abstpi, strki, koordausi, auswahl, snghz, sngs, sngy, sngx, sngrho As Single
- Dim i As Long
- Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- lbldatum.Text = "Heute ist der " & Date.Today
- btnok.Visible = False
- End Sub
- Private Sub btnende_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnende.Click
- Me.Close()
- End Sub
- Private Sub btncredits_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncredits.Click
- strcredits = MsgBox("Programmersteller: ich" & vbCrLf & "Programmtester: tester" & vbCrLf & vbCrLf & "Erstellt zwischen dem 20. und 25.06.2010", MsgBoxStyle.Information, "Credits")
- End Sub
- Private Sub btnkoordein_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnkoordein.Click
- auswahl = 1
- lblhinweis1.Text = "Punktnummer"
- lblhinweis2.Text = "Rechtswert"
- lblhinweis3.Text = "Hochwert"
- txtauswahl.Text = "Aktuelle Auswahl:" & vbCrLf & "Koordinateneingabe"
- koordeini += 1
- txtausgabe.Text += vbCrLf & "Koordinateneingabe Nr. " & koordeini & vbCrLf & "Pkt.-Nr. | Rechtswert | Hochwert" & vbCrLf
- lblhinweis1.ForeColor = Color.Red
- lblhinweis2.ForeColor = Color.Black
- lblhinweis3.ForeColor = Color.Black
- txtein1.Text = ""
- txtein2.Text = ""
- txtein3.Text = ""
- lblhinweis.Text = ""
- txtein1.Focus()
- End Sub
- Private Sub txtein1_KeyDown1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtein1.KeyDown
- If e.KeyCode = Keys.Enter Then
- If Me.txtein1.Text = "" Then
- lblhinweis.Text = "Koordinateneingabe beendet"
- txtausgabe.Text += "Ende der Koordinateneingabe" & vbCrLf
- txtauswahl.Text = ""
- txtein1.Text = ""
- txtein2.Text = ""
- txtein3.Text = ""
- lblhinweis1.ForeColor = Color.Black
- lblhinweis2.ForeColor = Color.Black
- lblhinweis3.ForeColor = Color.Black
- btnpolar.Focus()
- Else
- lblhinweis.Text = ""
- lblhinweis1.ForeColor = Color.Black
- lblhinweis2.ForeColor = Color.Red
- lblhinweis3.ForeColor = Color.Black
- i += 1
- txtein2.Focus()
- End If
- End If
- End Sub
- Private Sub txtein2_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtein2.KeyDown
- If e.KeyCode = Keys.Enter Then
- lblhinweis1.ForeColor = Color.Black
- lblhinweis2.ForeColor = Color.Black
- lblhinweis3.ForeColor = Color.Red
- txtein3.Focus()
- End If
- End Sub
- Private Sub txtein3_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtein3.KeyDown
- If e.KeyCode = Keys.Enter Then
- lblhinweis1.ForeColor = Color.Black
- lblhinweis2.ForeColor = Color.Black
- lblhinweis3.ForeColor = Color.Black
- If Me.txtein1.Text = "" Then
- lblhinweis.Text = "Fehlerhafte Punkteingabe"
- txtein1.Focus()
- ElseIf Me.txtein2.Text = "" Then
- lblhinweis.Text = "Fehlerhafter Rechtswert"
- txtein2.Focus()
- ElseIf Me.txtein3.Text = "" Then
- lblhinweis.Text = "Fehlerhafter Hochwert"
- txtein3.Focus()
- Else
- lblhinweis.Text = "Eingabe mit Enter bestätigen"
- btnok.Visible = True
- btnok.Focus()
- End If
- End If
- End Sub
- Private Sub btnok_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnok.Click
- lblhinweis1.ForeColor = Color.Red
- lblhinweis2.ForeColor = Color.Black
- lblhinweis3.ForeColor = Color.Black
- lblhinweis.Text = "Zum beenden der Koordinateneingabe einfach Enter drücken"
- 'Hier werden die Werte in die Variable geschrieben, im Idealfall ist es ein Array
- pnri = txtein1.Text
- yi = txtein2.Text
- xi = txtein3.Text
- 'Er soll irgendwie die Zeichen vor einem KOMMA zählen und mit drei Nachkommestellen an eine Bestimmte, immer gleich bleibende Stelle mit gleichem Abstand zwischen den Kommas in das Textfeld platzieren
- txtausgabe.Text += pnri & " " & yi & " " & xi & vbCrLf
- txtein1.Text = ""
- txtein2.Text = ""
- txtein3.Text = ""
- txtein1.Focus()
- btnok.Visible = False
- End Sub
- Private Sub btnkoordaus_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnkoordaus.Click
- txtausgabe.Text += vbCrLf & "Koordinatenverzeichnis" & vbCrLf & " Pkt.-Nr. | Rechtswert | Hochwert" & vbCrLf
- txtauswahl.Text = "Aktuelle Auswahl:" & vbCrLf & "Koordinatenverzeichnis"
- 'hier soll er alle Punkte mit dazugehörigen Rechts- und Hochwert anzeigen
- txtausgabe.Text += pnri & " " & yi & " " & xi & vbCrLf
- txtauswahl.Text = ""
- txtein1.Text = ""
- txtein2.Text = ""
- txtein3.Text = ""
- lblhinweis1.ForeColor = Color.Black
- lblhinweis2.ForeColor = Color.Black
- lblhinweis3.ForeColor = Color.Black
- btnkoordaus.Focus()
- End Sub
- End Class