VB 5/6-Tipp 0031: Maximum in einem Array ermitteln
von ActiveVB
Beschreibung
Aus Anlaß einer Frage im Forum hier das passende Beispiel zu diesem Thema. Da es in VB keine direkte Funktion zur Ermittelung eines maximalen Wertes gibt (Es sei denn über eine SQL-Abfrage) muss das Feld Element für Element durchsucht werden.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Textfeld "Text1" ' Steuerelement: Listen-Steuerelement "List1" ' Steuerelement: Beschriftungsfeld "Label3" ' Steuerelement: Beschriftungsfeld "Label2" ' Steuerelement: Beschriftungsfeld "Label1" Option Explicit Dim Feld&() '### Dies dient nur der Texteingabe und dem Füllen des Feldes Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Dim Zahl& Static CNT% If KeyCode = 13 Then Zahl = Val(Text1.Text) ReDim Preserve Feld(CNT + 1) Feld(CNT) = Zahl CNT = CNT + 1 List1.AddItem Trim$(CStr(Zahl)) Text1.Text = "" Call Maximum End If End Sub Private Sub Maximum() Dim X%, MAX&, MAXPos% '### Hier die eigentliche Maximumermittlung ### For X = 0 To UBound(Feld) If Feld(X) > MAX Then MAX = Feld(X) ' Maximum MAXPos = X ' Position des Maximums im Feld End If Next X '############################################## Label3.Caption = MAX List1.ListIndex = MAXPos End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB5 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB6 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 6 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Johannes Mockenhaupt am 31.03.2006 um 18:32
Leider ist noch ein Fehler drin: Das Prg funktioniert nur bei positiven Zahlen, bei negativen Zahlen versagt es.
mfG
Johannes Mockenhaupt
Kommentar von Michael Kupfer am 05.03.2006 um 12:14
Hallo!
Kann man die Maximumsuche auch so abändern, dass es die x-maximalen Werte im Array findet? also z.B. die 5 größten Werte?
Kommentar von Jochen Wierum am 19.08.2003 um 11:25
Hallo,
hier liegt ein Verständnisfehler vor!
Der Tipp ermittelt nicht die "Länge" (also Ubound) des Arrays, sondern dessen größten Wert!
Beispiel:
Dim a(3) As Integer
a(0) = 1: a(1) = 3: a(2) = 2: a(3) = 0
Die Oben vorgestellte Routine würde hier das Element mit der Nummer 1 finden, da dieses das "größte" Element im Array ist.
Wenn man wissen will, wie viele Elemente ein Array hat, geht dies tatsächlich mit Ubound.
Viele Grüße,
Jochen Wierum
Admin @ActiveVB
Kommentar von karl am 10.10.2002 um 22:42
an mephisto,
mit val(Feld(X)) gehts auch für deine Statistik
Kommentar von Jan am 19.08.2002 um 12:44
???
text1.ubound
aber für variablen geht da net auch
ubound(array1)
???
Kommentar von mephisto am 26.06.2002 um 04:28
Ist es meoglich die hoeste Zahl von mehreren verschiedenen Textfeldern zu ermitteln? Mein Programm erhaelt ueber ein Netzwerk Daten ueber eine Abstimmung. Waehrend der Abstimmung werden die Stimmen in einem Textfeld fuer den entsprechenden Kanditaden zusammen gezaehlt. Wie ist es nun aber moeglich nach der Abstimmung per Code den Gewinner zu ermitteln? Kann man dazu obiges Codebeispiel ein bisschen umbauen? Falls ja, bite ich um Hilfe.
mfG mephisto