| Autor |
Beitrag |
Noctis
      
Beiträge: 16
|
Verfasst: Fr 06.03.09 00:46
Abend,
Sitze jetzt seit 6 Stunden an einem Programm, jetzt komm ich aber an einer Stelle nicht mehr weiter und mir brummt langsam der Kopf.
Ich habe mit record mehrere arrays (integer) definiert.
die werte werden eingelesen und an eine listbox übergeben.
nun möchte ich in der listbox die eingegebenen werte vergleichen um herauszufinden welches der größte bzw der niedrigste wert dieser listbox ist.
den größten/niedrigste wert (mach ich dann mit einer radiobox) wert soll dann erstmal an ein edit feld übergeben werden.
wie könnte man das am besten bewerkstelligen?
bis jetzt bin ich bei
Delphi-Quelltext 1: 2: 3:
| FOR i := 0 TO ListBox1.Items.Count - 1 DO if listbox1.Items[i] > listbox1.Items[i+1] then edit1.text:=listbox1.Items[i]; |
bin mir erstmal noch ein kaffee machen ;) Moderiert von Narses: Topic aus VCL (Visual Component Library) verschoben am Fr 06.03.2009 um 01:13
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 06.03.09 00:54
Moin!
Noctis hat folgendes geschrieben : | Ich habe mit record mehrere arrays (integer) definiert.
[...]
nun möchte ich in der listbox die eingegebenen werte vergleichen um herauszufinden welches der größte bzw der niedrigste wert dieser listbox ist. |
Wenn die Elemente der Listbox Zahlen sind, dann darfst du keinen Stringvergleich machen (was du aktuell tust), das klappt nicht. Du mußt die Werte als Zahl vergleichen.
Noctis hat folgendes geschrieben : | bis jetzt bin ich bei
Delphi-Quelltext 1: 2: 3:
| FOR i := 0 TO ListBox1.Items.Count - 1 DO if listbox1.Items[i] > listbox1.Items[i+1] then edit1.text:=listbox1.Items[i]; | |
Das knallt auf jeden Fall, da du über die Anzahl der Elemente hinaus zugreifst.
Noctis hat folgendes geschrieben : | | wie könnte man das am besten bewerkstelligen? |
Ansatz:
- Den ersten Wert aus der Listbox als größten/kleinsten Wert annehmen
- In einer Schleife vom 2. bis zum letzten Element durchgehen und schauen, ob der aktuelle Wert größer/kleiner ist
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 06.03.09 00:58
|
|
Noctis 
      
Beiträge: 16
|
Verfasst: Fr 06.03.09 01:13
naja, Problem ist nur dass ich nicht recht weiss wie ich es anstellen soll.
das mit dem integer <-> string bringt mich hier auch schon ein wenig durcheinander, da ich in der methode die ich jetzt habe auch erst wieeder vom string in den integerwert umrechne.
wie soll ich die werte denn vorher vergleichen?
..das habe ich eben probiert
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| begin listbox1.Items[1]:=max; for I := 1 to ListBox3.Items.Count do begin if listbox3.items[i] > listbox3.Items[1] then listbox3.items[i]:=max; end;
edit1.text:=max;
end; |
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 06.03.09 01:20
Moin!
Noctis hat folgendes geschrieben : | | das mit dem integer <-> string bringt mich hier auch schon ein wenig durcheinander, da ich in der methode die ich jetzt habe auch erst wieeder vom string in den integerwert umrechne. |
Machst du doch gar nicht, jedenfalls nicht in dem Code, den du gezeigt hast.
Noctis hat folgendes geschrieben : | | wie soll ich die werte denn vorher vergleichen? |
Fragen wir mal anders rum: Wie kommen denn die Werte in die Listbox?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Noctis 
      
Beiträge: 16
|
Verfasst: Fr 06.03.09 01:26
in dem code oben fehlt vor jedem max das StrtoInt ^^
*schnief* ja jetzt seh ich das auch gerade, guck wahrscheinlich heute schon zulange auf delphie
Delphi-Quelltext 1:
| liste[i].jump:=strtoint(Edit3.Text); |
und dann ->
Delphi-Quelltext 1:
| Listbox3.Items.Add(inttostr(liste[i].jump)); |
so ejtzt sind die werte als string in der liste.
meine logik war dabei: ich kann die werte nicht vergleichen bevor diese nicht in der liste eingetragen sind.
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 06.03.09 01:29
Moin!
Noctis hat folgendes geschrieben : | so ejtzt sind die werte als string in der liste.
meine logik war dabei: ich kann die werte nicht vergleichen bevor diese nicht in der liste eingetragen sind. |
Und das ist genau "falsch rum"  du solltest die Minimum/Maximum-Suche vor der Ausgabe in die Listbox machen (naja, genau genommen sollte es egal sein, wann du das machst, wenn du die Werte in der Listbox nicht mehr veränderst).  So sparst du dir nämlich das ständige Umwandeln für die numerischen Vergleiche.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Noctis 
      
Beiträge: 16
|
Verfasst: Fr 06.03.09 01:47
mir missfällt bloß leider die Syntax um werte eines arrays zu vergleichen ^^, sonst wäre mir unter umständen schon vorhin eine idee gekommen.
nach dem motto
Delphi-Quelltext 1: 2: 3: 4:
| case of a[1] > a [2] a[2] > a[3] ... |
möchte ich es ja nun nicht gerade machen :S
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 06.03.09 01:49
Moin!
Wo ist das Problem? Geht z.B. so: Delphi-Quelltext 1:
| if (liste[i].jump > liste[i+1].jump) then | Schleife drum rum, fertig.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Noctis 
      
Beiträge: 16
|
Verfasst: Fr 06.03.09 02:08
ahhhh
gesagt, getan.
Delphi-Quelltext 1: 2: 3:
| for i := 1 to 20 do if (liste[i].jump > liste[i+1].jump) then max:=liste[i].jump; |
aber irgendwie hab ich noch einen fehler in der ausgabe, er gibt nicht [i]>[i+1] sondern den zuletzt eingegebenen [i]-wert ein 
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 06.03.09 02:11
Moin!
Noctis hat folgendes geschrieben : | aber irgendwie hab ich noch einen fehler in der ausgabe, er gibt nicht [i]>[i+1] sondern den zuletzt eingegebenen [i]-wert ein  |
Du hast dich ja auch nicht an das Kochrezept von weiter oben gehalten...
Delphi-Quelltext 1: 2: 3: 4:
| max := liste[1].jump; for i := 2 to 20 do if (liste[i].jump > max) then max := liste[i].jump; | cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Noctis 
      
Beiträge: 16
|
Verfasst: Fr 06.03.09 02:20
jetzt funktioniert es, danke für die investierte zeit
werde dann mal an dem rest des programmes weiterarbeiten 
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Fr 06.03.09 02:31
Moin!
Markierst du den Thread noch entsprechend, wenn dein Problem gelöst ist? Danke.
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|