Autor Beitrag
Otto Fetti
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 20.01.08 14:21 
Hi,
passend zu einer Präsentation über Sinus-Milleus in Deutschland, wollte ich den Zuhörern am Schluss der Präsentation ermögliche, dass sie sich selbst in ein Sinus Milleus einteilen. Dazu hatte ich vor in Delphi ein Programm zu schreiben, dass eine Art "Was bin ich" prinzip beinhaltet, wie es in einfacher Form oft in Zeitschriften zu finden ist. Informationen rund um mein Thema habe ich. Ich habe damit angefangen, dass ich mir natürlich Infos rund um die Einteilunsmilleus gesucht habe, umd mir mal überlegt habe, wie ich das in Delphi machen könnte.
Mein erster Versuch sie so aus:
img3.imagebanana.com...9n4isb/Unbenannt.jpg
Der passende Code dazu:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
var
  Form1: TForm1;
  tv, kons, etab, bm, km, mp, hed,exp,tvkons,etabbm,kmmp,hedexp,tvkonsetabbm, kmmphedexp : integer; 

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
tv := 0;
kons := 0;
etab := 0;
bm :=0 ;
km :=0;
mp := 0; 
hed := 0;
exp := 0;
if radiogroup1.itemindex +1 = 1 then inc(kons) ;
if radiogroup1.itemindex +1 = 2 then inc(etab) ;
if radiogroup1.itemindex +1 = 3 then inc(bm) ;
if radiogroup1.itemindex +1 = 4 then inc(mp) ;
if radiogroup1.itemindex +1 = 5 then inc(exp) ;
if radiogroup1.itemindex +1 = 6 then inc(km) ;
if radiogroup1.itemindex +1 = 7 then inc(hed) ;
 tv > kons then tvkons := tv else tvkons := kons;
if etab > bm then etabbm := etab else etabbm := bm;
if km > mp then kmmp := km else kmmp := mp;
if hed > exp then hedexp := hed else hedexp := exp;
if tvkons >etabbm then tvkonsetabbm := tvkons else tvkonsetabbm := etabbm;
if kmmp >hedexp then kmmphedexp := kmmp else kmmphedexp := hedexp;
if tvkonsetabbm > kmmphedexp then label3.caption:= inttostr(tvkonsetabbm;


Wie man sieht bin ich am Schluss hängen geblieben, da ich gemerkt habe, dass das so nicht funktioniert. Mein label3 gibt nämlich logischerweise nicht das entsprchende Milleus aus, sondern einfach die Zahl dazu. Gleichzeitig kann ich ihm natürlich nicht sagen welches Milleus ausgegeben werden soll, da ich das ja nicht weiß und der Nutzer das ganz selbst bestimmt.
Wie also kann ich es machen, dass ein durch Radiogroups bestimmtes Ergebnis mit 7 anderen verglichen wird und dann der richtige Begriff ausgegeben wird? Mit 2 auszugebenden Begriffen kann ichs noch, aber wie löst man es mit über 2?

Ich hoffe es kann jemand helfen und bedanke mich schon einmal im vorraus!

MfG Otto!
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 20.01.08 14:44 
Wieso nicht einfach so? Oder hab ich was falsch verstanden?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);  
begin  
  case RadioGroup1.ItemIndex of
    0: Label3.Caption := 'Nummer 1';
    1: Label3.Caption := 'Nummer 2';
    2: Label3.Caption := 'Nummer 3';
    3: Label3.Caption := 'Nummer 4';
    4: Label3.Caption := 'Nummer 5';
    5: Label3.Caption := 'Nummer 6';
    6: Label3.Caption := 'Nummer 7';
  end;
end;
Otto Fetti Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 20.01.08 14:49 
Danke schonmal für den Lösungsansatz, aber ich habe nur eine Radiogroup als Beispiel nehmen wollen. Ich habe später vor 5 oder 6 radiogroups anzubieten und dann muss ich ja mitzählen wie oft was geklickt wurde! Hier ein Beispiel mit 2 radiogroups und 2 Ergebnissen. Mein Problem besteht jetzt wenn ich mehrere RadioGroups und mehr als 2 Ergebnisse habe.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
var
  Form1: TForm1; 
  apfel, mensch:integer;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
apfel := 0;
mensch :=0;
if radiogroup1.itemindex +1 = 1 then inc(apfel);
if radiogroup1.itemindex +1 = 2 then inc(mensch);
if radiogroup2.itemindex +1 = 1 then inc(apfel);
if radiogroup2.itemindex +1 = 2 then inc(mensch);
if apfel > mensch then label1.caption := 'apfel';
if apfel < mensch then label1.caption := 'mensch';
if apfel = mensch then label1.caption := 'apfelmensch';

end;

end.


Entschudlige bitte wenn ich mi9ch eben etwas falsch ausgedrückt/unklar formuliert haben sollte!
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 20.01.08 14:59 
Also dann ein Integer-Array, indem du die Antworten zählst. Also wenn du jetzt 6 Antworten hast, dann nimmste ein Integer-Array mit 6 Elementen und erhöhst jeweils das entsprechende Element bei jeder Groupbox.
Glaub ich habs immernoch nicht kapiert. :nixweiss:
Otto Fetti Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 20.01.08 16:21 
Bin relativ neu in Delphi und weiß deshalb nicht wie man ein integer Array benutzen kann und ob es in diesem fall dienlich ist. Ich versuch menin Problem nochmal ohne Delphi genauer zu erklären:

Beispiel:

Radiogroup1:
[ ]grün <-- Apfelzahl: +1
[ ]rot <-- Kirchezahl: +1
[ ]orange <-- Orangenzahl: +1
[ ]Pink <-- Fantasiefruchtzahl: +1

Radiogroup2:
[ ]Apfelbaum <-- Apfelzahl: +1
[ ]Kirchbaum <-- Kirchezahl: +1
[ ]Orangenbaum <-- Orangenzahl: +1
[ ]Fantasiebaum <-- Fantasiefruchtzahk: +1

Auswertung:
Welche Zahl ist größer?
Größte Zahl herausfinden und Ergebnis anzeigen.


So das wäre mein Plan gewesen, wie ich in etwa das Programm umsetzen könnte. Bei der Auswertung hab ich aber eben das Problem, dass ich ja nicht alle 4 Zahlen miteinander gleichzeitig vergleichen kann und die größte anzeige, oder geht das irgendwie? Also habe ich versucht das im K.O. System zu machen, was allerdings (siehe oben --> mein problem) nicht geklappt hat! Wie kann ich es nun hinbekommen, dass es entweder mit dem K.O. System klappt, oder das es irgendwie anders klappt.

Ich hoffe ich habe es verständlich geschildert und gehe euch nicht auf die Nerven :/

MfG Otto
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 20.01.08 16:39 
Dein Problem ist also einfach, die größte Zahl von beliebig vielen Zahlen herauszufinden? Das andere hast du ja bereits hingekriegt.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
var
  zahlen: array[0..3] of Integer;
  groesteZahl: Integer;
  i: Integer;
begin
  zahlen[0] := 4;  // Es wurde 4 mal Apfel bzw. grün ausgewählt
  zahlen[1] := 3;  // Es wurde 3 mal Kirsche bzw. rot ausgewählt
  zahlen[2] := 6;  // Es wurde 6 mal Orange bzw. orange ausgewählt
  zahlen[3] := 9;  // Es wurde 9 mal die Fantasiefrucht bzw. pink ausgewählt

  groesteZahl := 0;

  for i := 1 to 3 do
    if zahlen[i] > zahlen[groesteZahl] then
      groesteZahl := i;

  case groesteZahl of
    0: ShowMessage('Es wurde am meisten Äpfel ausgewählt, nämlich ' + IntToStr(zahlen[0]));
    1: ShowMessage('Es wurde am meisten Kirschen ausgewählt, nämlich ' + IntToStr(zahlen[1]));
    2: ShowMessage('Es wurde am meisten Orangen ausgewählt, nämlich ' + IntToStr(zahlen[2]));
    3: ShowMessage('Es wurde am meisten Fantasiefrüchte ausgewählt, nämlich ' + IntToStr(zahlen[3]));
  end;
end;
Otto Fetti Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 20.01.08 17:32 
Danke, sowas hätte ich noch gar nicht gekonnt! Wie gesagt: ich lerne gerade erst Delphi (mit Hilfe eines Buches) und bin erst beim Kapitel Kontrollsturkturen...deswegen habe ich auch versucht das ganze per if zu lösen.

Mit deiner Methode läuft alles, danke :)