Autor |
Beitrag |
apoc
Hält's aus hier
Beiträge: 14
|
Verfasst: So 12.12.04 20:50
ich habe ein textfeld in dem eine zahl von 1-6 in 0,5er schritten steht diese zahl soll nach klicken eines buttons wie folgt umgewandelt werden.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| if edit1.text='1' then edit1.text:='12'; if edit1.text='1,5' then edit1.Text:='10'; if edit1.text='2' then edit1.text:='8'; if edit1.text='2,5' then edit1.text:='6'; if edit1.text='3' then edit1.text:='4'; if edit1.text='3,5' then edit1.text:='2'; if edit1.text='4' then edit1.text:='0'; if edit1.text='4,5' then edit1.text:='-2'; if edit1.text='5' then edit1.text:='-4'; if edit1.text='5,5' then edit1.text:='-6'; if edit1.text='6' then edit1.text:='-8'; |
es funktioniert bei allen werten, nur nicht beim wert 2,5 und 3 da kommt dann -8 und 0 raus.. woran liegt das???
hier ist der gesammte 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: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112:
| unit Comuniorechner;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Edit9: TEdit; Edit10: TEdit; Edit11: TEdit; Button1: TButton; Label12: TLabel; Button2: TButton; Label13: TLabel; Label14: TLabel; Button3: TButton; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Edit12: TEdit; Edit13: TEdit; Edit14: TEdit; Edit15: TEdit; Edit16: TEdit; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); private public end;
var Form1: TForm1; Spieler1, Spieler2 , Spieler3, Spieler4, Spieler5, Spieler6, Spieler7, Spieler8, Spieler9, Spieler10, Spieler11, Stuermertore, Mittelfeldspielertore, Abwehrspielertore, GelbRoteKarten, RoteKarten, Gesamt: integer;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject); begin Close; end;
procedure TForm1.Button1Click(Sender: TObject); begin Spieler1 := StrToInt(Edit1.Text); Spieler2 := StrToInt(Edit2.Text); Spieler3 := StrToInt(Edit3.Text); Spieler4 := StrToInt(Edit4.Text); Spieler5 := StrToInt(Edit5.Text); Spieler6 := StrToInt(Edit6.Text); Spieler7 := StrToInt(Edit7.Text); Spieler8 := StrToInt(Edit8.Text); Spieler9 := StrToInt(Edit9.Text); Spieler10 := StrToInt(Edit10.Text); Spieler11 := StrToInt(Edit11.Text); Stuermertore := StrToInt (Edit12.Text); Mittelfeldspielertore := StrToInt (Edit13.Text); Abwehrspielertore := StrToInt (Edit14.Text); GelbRoteKarten := StrToInt (Edit15.Text); RoteKarten := StrToInt (Edit16.Text);
Gesamt := Spieler1 + Spieler2 + Spieler3 + Spieler4 + Spieler5 + Spieler6 + Spieler7 + Spieler8 + Spieler9 + Spieler10 + Spieler11 + Stuermertore + Mittelfeldspielertore + Abwehrspielertore + GelbRoteKarten + RoteKarten;
Label12.Caption :=IntToStr(Gesamt); end;
procedure TForm1.Button3Click(Sender: TObject); begin if edit1.text='1' then edit1.text:='12'; if edit1.text='1,5' then edit1.Text:='10'; if edit1.text='2' then edit1.text:='8'; if edit1.text='2,5' then edit1.text:='6'; if edit1.text='3' then edit1.text:='4'; if edit1.text='3,5' then edit1.text:='2'; if edit1.text='4' then edit1.text:='0'; if edit1.text='4,5' then edit1.text:='-2'; if edit1.text='5' then edit1.text:='-4'; if edit1.text='5,5' then edit1.text:='-6'; if edit1.text='6' then edit1.text:='-8';
end;
end. |
Moderiert von Tino: Delphi-Tags hinzugefügt.
Zuletzt bearbeitet von apoc am So 12.12.04 22:42, insgesamt 1-mal bearbeitet
|
|
apoc 
Hält's aus hier
Beiträge: 14
|
Verfasst: So 12.12.04 20:56
ok mir ist aufgefallen dass die zahlen mehrmals umgewandelt werden also wenn aus der 2,5 eine 6 werden soll wird die 6 weiter umgewandelt in eine -8
wie kann ich einstellen dass diese aktion nur einmal durchgefürht wird?
|
|
Alstar
      
Beiträge: 827
|
Verfasst: So 12.12.04 21:01
z.B. so:
Delphi-Quelltext 1: 2: 3: 4: 5:
| if edit1.text='1' then begin edit1.text:='12'; exit; end; |
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: So 12.12.04 21:37
apoc hat folgendes geschrieben: | wie kann ich einstellen dass diese aktion nur einmal durchgefürht wird? |
íf ... then ... else
|
|
apoc 
Hält's aus hier
Beiträge: 14
|
Verfasst: So 12.12.04 22:09
mit else klappt irgendwie nicht!?
ist der befehl dann:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| if edit1.text='1' then edit1.text:='12' else; if edit1.text='1,5' then edit1.Text:='10' else; if edit1.text='2' then edit1.text:='8' else; if edit1.text='2,5' then edit1.text:='6' else; if edit1.text='3' then edit1.text:='4' else; if edit1.text='3,5' then edit1.text:='2' else; if edit1.text='4' then edit1.text:='0' else; if edit1.text='4,5' then edit1.text:='-2' else; if edit1.text='5' then edit1.text:='-4' else; if edit1.text='5,5' then edit1.text:='-6' else; if edit1.text='6' then edit1.text:='-8' else; |
???
Moderiert von Tino: Delphi-Tags hinzugefügt.
|
|
apoc 
Hält's aus hier
Beiträge: 14
|
Verfasst: So 12.12.04 22:59
Alstar hat folgendes geschrieben: | z.B. so:
Delphi-Quelltext 1: 2: 3: 4: 5:
| if edit1.text='1' then begin edit1.text:='12'; exit; end; | |
das funktioniert bei mir nicht.. es kommt die fehlermeldung
[Error] Comuniorechner.pas(97): Declaration expected but 'IF' found
|
|
Tino
      

Beiträge: 9839
Erhaltene Danke: 45
Windows 8.1
Delphi XE4
|
Verfasst: So 12.12.04 23:05
apoc hat folgendes geschrieben: | mit else klappt irgendwie nicht!?
ist der befehl dann:
{...} |
Dann schau dir mal in der Delphi-Hilfe (F1) an wie man ELSE anwendet. Hier im Forum findest du auch einige Beispiele.
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mo 13.12.04 00:05
Tino hat folgendes geschrieben: | Hier im Forum findest du auch einige Beispiele. |
... einige 100.000 glaub ich... moment... ne, nur 478:
DelphiForumSuche hat folgendes geschrieben: | Die Suche hat 478 Ergebnisse ergeben. |
Ich wette, du findest in mind. 90% der Ergebnisse eine korrekte Verwendung von
if <bedingung> then <anweisung> else <anweisung>;
PS: Ich meins nicht böse  nicht so auffassen, ok?
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: Mo 13.12.04 10:46
apoc hat folgendes geschrieben: | mit else klappt irgendwie nicht!?
ist der befehl dann:
Delphi-Quelltext 1: 2:
| if edit1.text='1' then edit1.text:='12' else; [...] |
???
|
Wieso stocherst du so herum?
Benutze die Delphi-Hilfe! Suche im Index mal "if-Anweisungen" und arbeite das durch, damit du nicht nur irgendwann irgendetwas abschreibst und herumprobierst, bis es passt, sondern das auch verstehst.
|
|
.Chef
      
Beiträge: 1112
|
Verfasst: Mo 13.12.04 10:53
Delphi-Quelltext 1:
| Edit1.Text:=IntToStr(12-(StrToInt(Edit1.Text)-1)*4); |
Grobe Schätzung ...
Gruß,
Jörg
_________________ Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: Mo 13.12.04 11:04
.Chef hat folgendes geschrieben: | Grobe Schätzung ... |
Stimmt,  da seine Edit-Inhalte nicht so wirklich nach Integer aussehen. 
|
|
.Chef
      
Beiträge: 1112
|
Verfasst: Mo 13.12.04 11:20
Jaaa, dann halt StrToFloat und Round ums Ganze. Ich wollte eher aufs Prinzip hinweisen. 
_________________ Die Antworten auf die 5 häufigsten Fragen:
1. Copy(), Pos(), Length() --- 2. DoubleBuffered:=True; --- 3. Application.ProcessMessages bzw. TThread --- 4. ShellExecute() --- 5. Keine Vergleiche von Real-Typen mit "="!
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: Di 14.12.04 12:29
.Chef hat folgendes geschrieben: | Ich wollte eher aufs Prinzip hinweisen.  |
Achsooooo. Ja dann kann es natürlich so stehen bleiben. 
|
|
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Di 14.12.04 13:15
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
JayEff
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Di 14.12.04 15:13
übersetze mal die wörter if und else ins deutsche: "WENN" und "ANSONSTEN" !!!! das sollte dir aufschluss auf die syntax geben. Sprachlogisches Konstrukt:
Quelltext 1:
| WENN <bedingung> DANN <anweisung> ANSONSTEN <anweisung>; |
alles klar?
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Di 14.12.04 15:21
Wieso denn so kompliziert? Wie wärs mit einer Case-Anweisung? Hoffe, ich hab das so richtig aus dem Ärmel geschüttelt, ich mach das net oft:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| case Round((StrToFloatDef(Edit1.Text,0)*10)) of 10:Edit1.Text:='12'; 15:Edit1.Text:='10'; 20:Edit1.Text:='8'; 25:Edit1.Text:='6'; 30:Edit1.Text:='4'; 35:Edit1.Text:='2'; 40:Edit1.Text:='0'; 45:Edit1.Text:='-2'; 50:Edit1.Text:='-4'; 55:Edit1.Text:='-6'; 60:Edit1.Text:='-8'; end; |
Ich glaub, das ist einmal übersichtlicher, aber im Endeffekt (trotz der Umwandlungen) schneller als diese if-else-Geschichten
|
|
IngoD7
      
Beiträge: 629
D7
|
Verfasst: Di 14.12.04 15:45
Übersichtlicher: Ja.
Schneller: Du lieber Gott, er kennt die bedingten Verzweigungen noch nicht mal; da wird er doch nicht an Geschwindigkeitsoptimierung denken.
Den Ansatz mit der Formel von .Chef gibt es ja im übrigen auch noch.
Aber alles das könnte er nur abschreiben - nicht verstehen. Ich bin, wie andere auch, der Meinung, er müsse sich erstmal die Grundlagen aneignen. Hier somit die if-then-else-Strukturen.
|
|