![]() |
Listbox
Hallo ich hab ein Problem ich soll Zahlen in eine Listbox einlesen das hab ich hin bekommen
aber nun soll ich dann noch den görßten wert ausgeben wo in der listbox steht aber ich ich weis nicht wie ich das machen muss ich denke das ich eine schleife brauch aber wie mach ich das dann wenn mir jemand helfen kann bin ich sehr froh |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Internet / LAN / ASP.NET" nach "Object-Pascal / Delphi-Language" verschoben.
Ich denke es wird auf eine Frage für diese Sparte herauslaufen. |
Re: Listbox
Ja, eine Schleife wäre nicht schlecht. Und dann hilf dir die Funktion
![]() LG, ich PS: Sag mir noch, was das mit "Internet / LAN / ASP.NET" zu tun hat, dort war es ja ursprünglich. |
Re: Listbox
ok danke ich schau mal ob ich es hin bekomme
|
Re: Listbox
ups das war ja gar keine antwort für mich sorry
|
Re: Listbox
sorry da hab ich nicht aufgepasst mein fehler
so versuche mal ob ich es hin bekomme |
Re: Listbox
also ich bin zu blöd dafür um da hin zu bekommen
naja ich versuch es mal weiter trotzdem danke für deine hilfe |
Re: Listbox
ich würde das auch gerne wissen wie man das macht
hab gar keine idee wie ich das hin bekommen soll kann mir nur denken das ich ne schleife brauche aber welche und wie mach ich das dann |
Re: Listbox
falls ich was finde bevor uns jemand hilft sag ich dir bescheid anfänger123
|
Re: Listbox
1.) kleinsterWert istgleich erste Zahl in der Liste
2.) Alle anderen Eintrage in der Liste durchgehen 2.1) Wenn der Eintrag X in der Liste kleiner ist als mein bisheriger "kleinsterWert" dann ist mein neuer "kleinsterWert" der Wert von EintragX. |
Re: Listbox
Wenn es wirklich der Reihenfolge nach immer höher wird, solltest du das mit z.B. dieser Schleife lösen können:
Delphi-Quellcode:
Das ist eine total schlechte Variante, die ich mir schnell ohne Delphi selber ausgedacht habe, bin für Verbesserungen sehr dankbar.
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer; begin for i := 0 to ListBox1.Items.Count - 1 do // Für alle Items von 0 bis ListBox Itemanzahl - 1 begin Label1.Caption := IntToStr(max(StrToInt(ListBox1.Items[i]), -1)); // hier wird mit der Funktion max verglichen // Wenn es allerdings negativ Zahlen gibt, musst du -1 ersetzen end; end; |
Re: Listbox
geht bei mir nicht bin zu dumm dafür
|
Re: Listbox
anstelle von "geht nicht" gib uns einfach eine Fehlerbeschreibung. Was geht nicht? Welche Fehlermeldung kommt? bei welcher Anweisung kommt die Fehlermeldung etc.
|
Re: Listbox
Delphi-Quellcode:
so in das Maximal.Caption soll er mir dann den größten wert rein schreiben aber er sagt immer
for i := 0 to isbListe.Items.Count - 1 do
begin Maximal.Caption := IntToStr(max(StrToInt(isbListe.Items[i]), -1)); das maximal nicht definiert wäre max findet er auch nicht [edit=SirThornberry]Delphi-Tags gesetzt. Mfg, SirThornberry[/edit] |
Re: Listbox
hast du eine Komponente oder Variable die "Maximal" heißt?
|
Re: Listbox
ja ich hab eine maximal.caption
aber dort hab ich einen anderen namen müssen eintragen und dann bringt er mir diese fehlermeldung nicht mehr aber jetzt hab ich den fehler das ein semikolon fehlet weis aber nicht wo
Delphi-Quellcode:
[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen. Mfg, SirThornberry[/edit]
for i := 0 to isbListe.Items.Count - 1 do
begin gbMaxi.Caption := IntToStr(max(StrToInt(isbListe.Items[i]), -1)); end; //hab ich auch gemacht hab es nur vergessen hin zu schreiben |
Re: Listbox
semikolon oder operatpr fehlt ist die fehlermeldung
|
Re: Listbox
wenn du bei der schleife ein "begin" hast, muss auch ein "end;" dann kommen. Hast du das eventuell vergessen? Wenn du an deinem Beitrag etwas ändern willst kannst du übrigens den "Edit"-Button über dem entsprechenden Beitrag verwenden.
|
Re: Listbox
hab es leider nicht hin bekommen der quelltext von anfänger123 versteh ich nicht kann mir vielleicht jemand helfen damit ich auch wieder genau weis um was es geht
verstehe nicht wie der dann auf den größten wert kommen will so |
Re: Listbox
Es ist eigentlich nicht schwer. Die Items fangen bei 0 an und hören z.B. bei 255 auf --> das letzte Item hat die höchste Zahl (255).
Delphi-Quellcode:
for i := 0 to isbListe.Items.Count - 1 do
begin gbMaxi.Caption := IntToStr(max(StrToInt(isbListe.Items[i]), -1)); // Hier wird ganz einfach das höchste Item in ein Label mit dem Namen "gbMaxi" geschrieben. IsbListe ist die ListBox. // max - Siehe OH end; |
Re: Listbox
Achtung: Pseudocode:
Delphi-Quellcode:
Am Ende hat i den Index des grössten Elementes in der Liste. Ist aber ungetestet.
var
i: integer; vergleichswert: integer; begin vergleichswert := 0; for i := 0 to liste.Items.Count - 1 do begin if ( StrToInt(liste.Items[i]) > StrToInt(liste.Items[vergleichswert]) ) then begin // grösseren Wert gefunden: Vergleichswert := i; end; end; end; |
Re: Listbox
Wenn ich den Code von Phoenix etwas ausbessern darf:
Delphi-Quellcode:
-> »Am Ende hat vergleichswert den Index des grössten Elementes in der Liste.«
var
i: integer; vergleichswert: integer; begin vergleichswert := 0; for i := 1 to liste.Items.Count - 1 do begin if ( StrToInt(liste.Items[i]) > StrToInt(liste.Items[vergleichswert]) ) then begin // grösseren Wert gefunden: vergleichswert := i; end; end; end; for i := 1 to..., weil StrToInt(liste.Items[0]) > StrToInt(liste.Items[0]) nie stimmen kann -> unnötig bei 0 zu beginnen LG, ich |
Re: Listbox
also ich hab das jetzt ausprobiert und er zeigt mir immer noch nicht den größten wert an
Delphi-Quellcode:
und wenn ich i:=1 setze geht es auch nicht
begin
vergleichswert := 0; for i := 0 to isbliste.Items.Count - 1 do begin if ( StrToInt(isbliste.Items[i]) > StrToInt(isbliste.Items[vergleichswert])) then begin Vergleichswert := i; edtText.Text := FloatToStr (Vergleichswert); end; end; end; wenn ich die werte 4,5,6 und 9 habe gibt er mir als größter wert die 3 aus das versteh ich nicht kann mir vielleicht jemand helfen |
Re: Listbox
Hi,
du hast nur den Index ausgegeben und nicht den Wert
Delphi-Quellcode:
Grüße vom marabu
begin
vergleichswert := 0; for i := 0 to isbliste.Items.Count - 1 do begin if ( StrToInt(isbliste.Items[i]) > StrToInt(isbliste.Items[vergleichswert])) then begin Vergleichswert := i; edtText.Text := isbliste.Items[vergleichswert]; end; end; end; |
Re: Listbox
Hallo,
Die Variable "Vergleichswert" beinhaltet nicht die größte Zahl, sondern den Index der größten Zahl. Du bekommst also das Ergebnis mit isbliste.Items[Vergleichswert]. Hier mal das Ganze als Funktion:
Delphi-Quellcode:
In der ListBox dürfen aber nur Zahlen stehen, sonst gibt's einen Fehler.
function GetMax(LB: TListBox): Integer;
var i: Integer; Max: Integer; begin if LB.Items.Count = 0 then // Listbox ist leer -> -1 begin Result := -1; Exit; end; Max := 0; for i := 1 to LB.Items.Count - 1 do if (StrToInt(LB.Items[i]) > StrToInt(LB.Items[Max])) then Max := i; Result := StrToInt(LB[Max]); end; Gruß xaromz |
Re: Listbox
so hab es jetzt hin bekommen mit dem maximal und dem minimal wert jetzt versuch ich nur noch den mittel wert und dann hab ich es auch endlich fertig
danke für eure hilfe ohne euch hätte ich es nciht hin bekommen also an alle die mir geholfen habe danke |
Re: Listbox
MIttelwert? Wo is das Problem, die rechnest alle Zahlen (Listbox.Items) zusammen und teilst sie dann durch die Anzahl dieser.
|
Re: Listbox
ja und das muss ich jetzt noch raus finden wie ich das in eine shcleife schreibe
|
Re: Listbox
danke für eure hilfe hab jetzt auch endlich den maximalwert
viellen danke für eure schnelle hilfe |
Re: Listbox
Delphi-Quellcode:
Obwohl, mir fällt grad ein das wäre ja der Durchschnitt und nicht der Mittelwert. :shock:
var
i, value : Integer; for i := 0 to Listbox1.Items.Count-1 do value := value + StrToInt(Listbox1.Items[i]) value := value mod Listbox1.Items.Count-1; |
Re: Listbox
Hallo,
Zitat:
Gruß xaromz |
Re: Listbox
und wie errechne ich jetzt denn mittelwert
|
Re: Listbox
Hi.
Durchschnitt und (arithmetischer) Mittelwert sind landläufig dasselbe. Wenn du aber den mittleren Wert (Median) brauchst, dann musst du deine Werte erst sortieren. Maximum und Minimum sind dann Abfallprodukte des Sorts und der Median ergibt sich zu:
Delphi-Quellcode:
Grüße vom marabu
function Median(s: TStrings): Extended;
var iMedian: Integer; begin iMedian := s.Count div 2; if Odd(s.Count) then Result := StrToInt(s[iMedian]) else Result := (StrToInt(s[iMedian]) + StrToInt(s[Pred(iMedian)])) / 2; end; |
Re: Listbox
hallo hat jemand vielleicht noch eine andere idee wie ich den Mittelwert raus bekomme weil #ich hab keine und die eine Lösung versteh ich nicht
|
Re: Listbox
Hallo,
Zitat:
Zwei Tipps: Die einzelnen Befehle in der Hilfe nachschlagen. Am Anfang der Funktion einen Breakpoint setzen und schrittweise durchgehen. Dabei beobachten, wie sich die Variablen verändern. Wenn das nichts nützt, nochmal konkret nachfragen. Ansonsten würde ich Dir empfehlen, ein paar Tutorials durchzulesen; diese Funktion ist äußerst trivial, und wenn Du hier schon Schwierigkeiten hast, ist wohl das Aneignen von Grundlagen der erste Schritt :wink: . Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz