Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Array, gleiche Werte zählen / Logikproblem. (https://www.delphipraxis.net/135078-array-gleiche-werte-zaehlen-logikproblem.html)

g3m1n1 4. Jun 2009 13:22


Array, gleiche Werte zählen / Logikproblem.
 
Hi Leute !

Als erstes ein herzliches Hallo an die gesamte Community.

Ich habe kürzlich mit Delphi angefangen ( vorher c++ und java ) und bin
nun in ein Problem gerannt. Eigentlich geht es mehr um ein logisches
Problem als um ein syntaxspezifisches... aber seht selbst.

- Ich habe 14 Comboboxen. In diesen lassen sich verschiedene Werte auswählen.
( Freizeit, Schulden, KFZ, Sonstige Ausgaben, ... ) Wobei in jeder Combobox
die gleichen Werte zur Verfügung stehen.

Ich möchte nun mit einem Klick auf einen Button anzeigen lassen, Wieviele
Positionen der 14 Comboboxen gleich sind. Sprich, wenn in 5 der 14 Comboboxen
" Schulden " gewählt wurde, dann möchte ich anzeigen lassen können : SCHULDEN : 5

Ich würde das ja mit dem itemindex machen, aber ich komme gerade nicht weiter.

Zur Erklärung noch dazu, links neben den 14 Comboboxen sind 14 Editboxen. In
diese schreibt man dann z.B. eine Summe hinein ( z.B. was man neulich für Zigaretten
ausgegeben hat ) und wählt dann daneben bei der Combobox treffenderweise "Freizeit" oder "Genussmittel".

Am Ende will ich einfach nur angezeigt haben, wieviele der 14 Positionen unter welche
Gruppe fallen.
Was später noch dazukommt, dass die hinterlegten Summen ( ebenfalls 14 Editboxen ) pro
Gruppe addiert werden. Einfach ausgedrückt, dass man weiß, wieviel Geld man z.B. insgesamt
für Zigaretten ausgegeben hat.

- es existiert ein Array[13]
- dieses Array ist gefüllt mit itemindizes ( array[0] := combobox1.itemindex etc. etc. bis array[13] und combobox 14 )

Kann mir jemand weiterhelfen ?

Viele Grüße, Andi

jfheins 4. Jun 2009 13:31

Re: Array, gleiche Werte zählen / Logikproblem.
 
Außer der Tatsache, dass ich sowas in Excel machen würde/schonmal gemacht habe:

Benutze Bucketsort.

Genauer: Erstelle ein Array mit sovielen Elementen wie in der Combobox auswählbar sind. Dann gehst du die Comboboxen durch und machst sowas: MyArray[ComboboxX.ItemIndex] := MyArray[ComboboxX.ItemIndex] + 1;
Danach hast du in dem Array an jedem Index die Anzahl an Comboboxen stehen, in der dieser Eintrag ausgewählt ist ;)

mkinzler 4. Jun 2009 13:40

Re: Array, gleiche Werte zählen / Logikproblem.
 
Oder "live" bei der Änderungen einer ComboBox

angos 4. Jun 2009 13:41

Re: Array, gleiche Werte zählen / Logikproblem.
 
Hi und Willkommen,

das von jfheins erklärte ist die eine Option. Die andere ist, du definiert dir deine eigenen Typen als zB Konstanten.

Delphi-Quellcode:
const
  CONST_Schulden = 1;
  CONST_Ausgaben = 2;
  usw...
zusätzlich haste die Variablen:

Delphi-Quellcode:
var
  CountSchulden: Integer;
  CountAusgaben: Integer;
  ....
nun kannst du in einer Schleife dein Array abarbeiten.

Delphi-Quellcode:
  for i := 0 to High(Meinarray) do
  begin
    case Meinarray[i] of
      CONST_SChulden: Inc(CountSchulden);
      CONST_Ausgaben: Inc(CountAusgaben);
      ...
    end;
  end;
Das nachher noch auf die Summe der Werte zu erweitern sollte nicht so schwer sein. Tip:
Delphi-Quellcode:
type
  meinrecord = record
    TypID: Integer;
    TypBezeichnung: String;
    Summe: Double;
  end;

var
  WerteArray = array of meinrecord;

Gruß
Ansgar

g3m1n1 4. Jun 2009 13:46

Re: Array, gleiche Werte zählen / Logikproblem.
 
Das mit Excel hat mein Bruder auch gesagt :D Aber dennoch,
das muss sich doch programmieren lassen in delphi, oder ?

Wie soll das funktionieren ? Soll das X in comboboxX denn variabel sein ? Das klappt doch nicht.
Sonst hätte ich mir vie lMphe ersparen können, wenn sowas wie Combobox[x].itemindex gehen würde.

Ich will doch nur wissen und anzeigen lassen, wieviele Positionen man im Monat für welche Gruppe eingibt, und das dann addieren.

Beispiel...

Editboxen Editboxen Comboboxen

Dacia Rate 250 KFZ
Polo Rate 150 KFZ
Schulden 400 SCHULDEN
Zigaretten 4 GENUSSMITTEL
Tanken 200 KFZ

---------------------------------------

So, und am Ende hab ich dann ein paar Labels etc. die anzeigen sollen ( am besten größter Betrag zu erst ) :

KFZ 600
SCHULDEN 400
GENUSSMITTEL 4

---------------------------------------

Ist das denn so hart zu programmieren ?!

Oder häng ich einfach nur grad.

DeddyH 4. Jun 2009 13:51

Re: Array, gleiche Werte zählen / Logikproblem.
 
Zitat:

, wenn sowas wie Combobox[x].itemindex gehen würde.
Wenn man das entsprechend definiert, geht das auch, z.B. so:
Delphi-Quellcode:
var Boxes: array[0..42] of TComboBox;

mkinzler 4. Jun 2009 13:52

Re: Array, gleiche Werte zählen / Logikproblem.
 
-ComboBoxen in Array oder Liste
-<Form>.FindComponent()
-"live" über Sender

g3m1n1 4. Jun 2009 13:52

Re: Array, gleiche Werte zählen / Logikproblem.
 
Erstmal, vielen Dank für die schnellen Antworten. Bin absolut überrascht.

Was ich vielleicht dazusagen sollte....

Die Positionen in den Comboboxen sind erweiterbar. Die werden bei Programmstart aus
einer Datei gelesen und lassen sich innerhalb des Programms auch erweitern. Wenn also
jemand meint, er muss den Punkt "Computerspiele" dazumachen, dann fügt er ihn hinzu.
Fortan ist dieser Punkt dann auch in der Combobox.

Das ist ein Problem. Bei euren Lösungswegen wird eine feste Anzahl vorausgesetzt, oder ?

angos 4. Jun 2009 13:52

Re: Array, gleiche Werte zählen / Logikproblem.
 
Zitat:

Zitat von g3m1n1
[..]Wie soll das funktionieren ? Soll das X in comboboxX denn variabel sein ? Das klappt doch nicht.
Sonst hätte ich mir vie lMphe ersparen können, wenn sowas wie Combobox[x].itemindex gehen würde.[..]

Klar kannst du direkt auf die Comboboxen zugreifen :)

Such mal in der Delphihilfe oder hier in der DP nach "FindComponent". Das ist das was du suchst

[edit] roter kasten fehlte...[/edit]
Gruß
Ansgar

quendolineDD 4. Jun 2009 13:57

Re: Array, gleiche Werte zählen / Logikproblem.
 
Wie wäre es mit OOP? Edit: Wenn du vorher mit Java programmiert hast, dächte ich wäre dein erster Ansatz das auch weiterhin OO zu gestalten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:52 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz