AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Case of funktioniert nicht

Ein Thema von Rookie91 · begonnen am 29. Jul 2015 · letzter Beitrag vom 29. Jul 2015
Antwort Antwort
Seite 1 von 2  1 2      
Rookie91

Registriert seit: 29. Jul 2015
16 Beiträge
 
#1

Case of funktioniert nicht

  Alt 29. Jul 2015, 14:33
Hallo zusammen!

ich bin neu hier und wollte mal nachfragen, ob hier jemand eine Lösung für mein Problem hat. Und zwar geht es um folgendes: Für mein Studium muss ich ein kleines Delphi-Projekt programmieren (in der Ausgestaltung sind wir frei).
Ich habe nun mehrere Comboboxen. Ich möchte jeweils eine Combobox mit einer anderen Combobox durch eine Case of Struktur verbinden. Um es besser nachzuvollziehen habe ich den Quelltext eingefügt:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
begin
  case combobox2.ItemIndex of
  0: begin case combobox3.ItemIndex of
    0: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001
                    /9.87*0);
    1: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001
                    /9.87*1);
    2: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001
                    /9.87*2);
    3: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001
                    /9.87*3);
    4: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001
                    /9.87*4);
    5: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001
                    /9.87*5);
      end;

  case combobox2.ItemIndex of
  1: begin case combobox3.ItemIndex of
    0: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073
                    /9.87*0);
    1: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073
                    /9.87*1);
    2: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073
                    /9.87*2);
    3: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073
                    /9.87*3);
    4: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073
                    /9.87*4);
    5: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073
                    /9.87*5);
      end;
usw...

Für den ersten Abschnitt, also case combobox2.itemindex of 0:... funktioniert alles. Für den Rest leider nicht. Es wird mir allerdings auch keine Fehlermeldung angezeigt.

Was mache ich falsch?
Bin noch blutiger Anfänger und hoffe, dass ihr mir helfen könnt


Grüße

Geändert von MrSpock (29. Jul 2015 um 15:14 Uhr) Grund: Delphi - Tage eingefügt.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Case of funktioniert nicht

  Alt 29. Jul 2015, 14:39
"Funktioniert nicht" ist keine nachvollziehbare Fehlermeldung. Bitte beschreibe doch genau, was du erwartest und was stattdessen eintritt.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Case of funktioniert nicht

  Alt 29. Jul 2015, 14:43
Case in einem case? Bist du dir sicher dass du das wolltest? Siehe Bild im Anhang.
Miniaturansicht angehängter Grafiken
unbenannt.png  
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Case of funktioniert nicht

  Alt 29. Jul 2015, 14:46
.. ginge das nicht auch ohne case of

Delphi-Quellcode:
edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073
/9.87*combobox3.ItemIndex);
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Case of funktioniert nicht

  Alt 29. Jul 2015, 14:47
Ohje, das ist ja mal ne ganze Spaghetti-Code-Mahlzeit, die mindestens für 8 Personen ausreicht, ohne das "usw." beachtet zu haben. Ich schätze mal, das kann man alles auf wenige Zeilen reduzieren. Versuch mal "Edit4.Text :=" nur ein einzigesmal in den Code zu bringen.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Case of funktioniert nicht

  Alt 29. Jul 2015, 14:49
Das Problem ist: der Fall combobox2.ItemIndex > 0 wird niemals abgearbeitet! Formatier das Ganze mal und und achte auf die Begin ... End Blöcke! Dann siehst Du, das alles im Fall combobox2.ItemIndex = 0 steht.
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Case of funktioniert nicht

  Alt 29. Jul 2015, 14:55
So wie ich das sehe, verwendest du immer

edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001/9.87*0); Wobei sich die 0.4 abhängig von ComboBox2.ItemIndex ändert, die 0 abhängig von ComboBox3.ItemIndex (genauer gesagt entspricht sie die ItemIndex)

Wieso also nicht:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var
  MagicNumber1: Integer;
  MagicNumber2: Double;
begin
  MagicNumber1 := ComboBox3.ItemIndex;
  case ComboBox2.ItemIndex of
    0: MagicNumber2 := 0.4;
    1: MagicNumber2 := 0.9;
    {was auch immer hier noch folgen kann}
  end;
  edit4.Text:= FloatToStr(
    MagicNumber2*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001/9.87*MagicNumber1);
end;

Wobei man das natürlich auch noch weiter optimieren kann...
Sebastian

Geändert von SProske (29. Jul 2015 um 14:58 Uhr)
  Mit Zitat antworten Zitat
Rookie91

Registriert seit: 29. Jul 2015
16 Beiträge
 
#8

AW: Case of funktioniert nicht

  Alt 29. Jul 2015, 15:01
@ baumina: ja ich bin mir da sogar ziemlich sicher, dass das viel kompakter geht. Nur habe ich nicht mehr allzuviel Zeit, mir da was zu überlegen..mit copy paste gehts dann doch relativ zügig..

@ULIK: Was meinst du mit formatieren? ich dachte ein begin hinter dem ersten itemindex und ein end nach den Anweisungen für den jeweiligen itemindex reicht aus?

Vielen Dank für die schnellen Antworten!
  Mit Zitat antworten Zitat
SProske

Registriert seit: 16. Feb 2015
Ort: Halle/S.
116 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: Case of funktioniert nicht

  Alt 29. Jul 2015, 15:12
Mit formatieren meint er vermutlich das:

Delphi-Quellcode:
  case combobox2.ItemIndex of
    0: begin
      case combobox3.ItemIndex of
        0: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001/9.87*0);
        1: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001/9.87*1);
        2: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001/9.87*2);
        3: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001/9.87*3);
        4: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001/9.87*4);
        5: edit4.Text:= FloatToStr(0.4*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000001/9.87*5);
      end;
      case combobox2.ItemIndex of //diese Zeile muss vermutlich einfach weg?
        1: begin
          case combobox3.ItemIndex of
            0: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073/9.87*0);
            1: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073/9.87*1);
            2: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073/9.87*2);
            3: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073/9.87*3);
            4: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073/9.87*4);
            5: edit4.Text:= FloatToStr(0.9*StrToFloat(edit11.Text)*8*StrToFloat(edit1.Text)*StrToFloat(edit1.Text)/0.00000002073/9.87*5);
          end;
        end;
      end;
    end;
  end;
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Case of funktioniert nicht

  Alt 29. Jul 2015, 15:17
@ baumina: ja ich bin mir da sogar ziemlich sicher, dass das viel kompakter geht. Nur habe ich nicht mehr allzuviel Zeit, mir da was zu überlegen..mit copy paste gehts dann doch relativ zügig..
Zügig zu deiner Anfrage hier, ja, zum angestrebten Ergebnis allerdings nicht.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr.
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