Autor Beitrag
apoc
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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.
ausblenden 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:
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:
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
    { Private declarations }
  public
    { Public declarations }
  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 user profile iconTino: Delphi-Tags hinzugefügt.


Zuletzt bearbeitet von apoc am So 12.12.04 22:42, insgesamt 1-mal bearbeitet
apoc Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: So 12.12.04 21:01 
z.B. so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if edit1.text='1' then 
begin
  edit1.text:='12';
  exit;
end;
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 12.12.04 22:09 
mit else klappt irgendwie nicht!?
ist der befehl dann:
ausblenden 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 user profile iconTino: Delphi-Tags hinzugefügt.
apoc Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: So 12.12.04 22:59 
Alstar hat folgendes geschrieben:
z.B. so:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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 :D nicht so auffassen, ok?

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 13.12.04 10:46 
apoc hat folgendes geschrieben:
mit else klappt irgendwie nicht!?
ist der befehl dann:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1112



BeitragVerfasst: Mo 13.12.04 10:53 
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 13.12.04 11:04 
.Chef hat folgendes geschrieben:
Grobe Schätzung ...

Stimmt, 8) da seine Edit-Inhalte nicht so wirklich nach Integer aussehen. :shock: :wink:
.Chef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1112



BeitragVerfasst: Mo 13.12.04 11:20 
Jaaa, dann halt StrToFloat und Round ums Ganze. Ich wollte eher aufs Prinzip hinweisen. :roll:

_________________
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Di 14.12.04 12:29 
.Chef hat folgendes geschrieben:
Ich wollte eher aufs Prinzip hinweisen. :roll:

Achsooooo. Ja dann kann es natürlich so stehen bleiben. :lol:
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Di 14.12.04 13:15 
apoc hat folgendes geschrieben:
mit else klappt irgendwie nicht!?
ist der befehl dann:
ausblenden 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;

???

versuchs mal ohne die ";" nach dem else
:wink:

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: 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:
ausblenden Quelltext
1:
WENN <bedingung> DANN <anweisung> ANSONSTEN <anweisung>;					

alles klar?

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: 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. :wink:
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.