Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Integer , case of und Komma?


panic220 - So 04.12.11 05:49
Titel: Integer , case of und Komma?
Ich muss in einer case of abfrage eine komma Zahl eingen pi umgenauer zu sein 3.1415 bla bla wie soll ich das machen ? er meldet mir immer wieder 2 verschiedene unkompatible datei typen an? gibt es ein Programmformat der Komma if und case of kann? oder ne andere möglichkeit werte auf & ab zu runden?


Moderiert von user profile iconMartok: Topic aus Sonstiges (Delphi) verschoben am So 04.12.2011 um 05:56

Moderiert von user profile iconMartok: Beiträge zusammengefasst

Intenger geht nicht....


Gausi - So 04.12.11 09:44

user profile iconpanic220 hat folgendes geschrieben Zum zitierten Posting springen:
Intenger geht nicht....


Probiers mal mit Integer.

Den Rest habe ich nicht verstanden, bzw. habe keine Lust, darauf weiter zu antworten.


jaenicke - So 04.12.11 09:45

Geht es auch auf nochmal auf deutsch? Was du mit dem case of nun wirklich erreichen willst, kann ich aus deinem Post nicht herauslesen. Nur diese Frage, auch wenn ich da nicht verstehe was die mit case zu tun hat:
user profile iconpanic220 hat folgendes geschrieben Zum zitierten Posting springen:
oder ne andere möglichkeit werte auf & ab zu runden?
Round / Ceil?


bummi - So 04.12.11 09:58

suchst Du so etwas ?

http://www.delphi-forum.de/viewtopic.php?t=107689&highlight=floatcase


panic220 - So 04.12.11 16:49

Entschuldige mein gutes Deutsch um 5 Uhr Morgens ich saß an Delphi schon seit Gestern 22 Uhr, egal. Vieleicht habe ich micht nicht ganz verständlich ausgedrückt.

Das Problem liegt an Datei Typen, ich muss in einer case of-Abfrage mit Komma-Zahlen und Brüchen arbeiten in berechnungen.

[Fehler] Volumina.dpr(170): Inkompatible Typen: 'Integer' und 'Extended'

Kann ich mit verschiedenen Datei Typen arbeiten ?


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:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
program Volumina;

{$APPTYPE CONSOLE}

var auswahl1, auswahl2, ergebnis, wert1, wert2, wert3 :integer;
CONST PI=3.1415;

begin
writeln ('Das Programm berechnet das Volumen oder die Obeflaeche der nachfolgenden Koerper' );
writeln ('1> Zylinder ');
writeln ('2> Wuerfel ');
writeln ('3> Quader ');
writeln ('4> Kugel ');
write   ('Zur Auswahl der Koerpers geben sie die jeweilige Ziffer ein! ');
readln  (auswahl1);



case (auswahl1) of

1:
        begin
        Writeln ('Sie haben sich fuer dem Zylinder entschieden');
        writeln ('1> Oberflaeche ');
        writeln ('2> Volumen ');
        writeln ('Was moechten sie nun Ausrechnen? Geben Sie die jeweilige Ziffer ein!');
        readln  (auswahl2);


                if auswahl2 = 1 then
                begin;
                writeln ('Sie haben sich fuer die Oberflaeche entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen lol Variablen an ');
                write ('Radius (r): ');
                readln (wert1);
                write ('Koerperhoehe (h): ');
                readln (wert2);

                ergebnis := (wert1*wert1*PI)*(2*wert1*PI)*wert2;
                writeln ('Die Oberflaeche des Zylinders betraegt: ',ergebnis);
                end;


                if auswahl2 = 2 then
                begin;
                writeln ('Sie haben sich fuer das Volumen entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen nicht so lol Variablen an ');
                write   ('Radius (r): ');
                readln  (wert1);
                write   ('Koerperhoehe (h): ');
                readln  (wert2);

                ergebnis := (wert1*wert1*PI)*wert2;
                writeln ('Das Volumen des Zylinders betraegt: ',ergebnis);
                end;


        end;

2:
        begin
        Writeln ('Sie haben sich fuer dem Wuerfel entschieden');
        writeln ('1> Oberflaeche ');
        writeln ('2> Volumen ');
        writeln ('Was moechten sie nun Ausrechnen? Geben Sie die jeweilige Ziffer ein!');
        readln  (auswahl2);


                if auswahl2 = 1 then
                begin;
                writeln ('Sie haben sich fuer die Oberflaeche entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen Variablen an ');
                write   ('Geben sie die Seite (a) an : ');
                readln  (wert1);


                ergebnis := 6*(wert1*wert1);
                writeln ('Die Oberflaeche des Wuerfels betraegt: ',ergebnis);
                end;




                if auswahl2 = 2 then
                begin;
                writeln ('Sie haben sich fuer das Volumen entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen Variablen an ');
                write   ('Geben sie die Seite (a) an : ');
                readln  (wert1);

                ergebnis := wert1*wert1*wert1;
                writeln ('Das Volumen des Wuerfels betraegt: ',ergebnis);
                end;

        end;
3:
        begin
        Writeln ('Sie haben sich fuer dem Quader entschieden');
        writeln ('1> Oberflaeche ');
        writeln ('2> Volumen ');
        writeln ('Was moechten sie nun Ausrechnen? Geben Sie die jeweilige Ziffer ein!');
        readln  (auswahl2);


                if auswahl2 = 1 then
                begin;
                writeln ('Sie haben sich fuer die Oberflaeche entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen Variablen an ');
                write   ('Geben sie die Seite (a) an : ');
                readln  (wert1);
                write   ('Geben sie die Seite (b) an : ');
                readln  (wert2);
                write   ('Geben sie die Seite (c) an : ');
                readln  (wert3);

                ergebnis := (2*wert1*wert2)+(2*wert1*wert3)+(2*wert2*wert3);
                writeln ('Die Oberflaeche des Quaders betraegt: ',ergebnis);
                end;




                if auswahl2 = 2 then
                begin;
                writeln ('Sie haben sich fuer das Volumen entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen Variablen an ');
                write   ('Geben sie die Seite (a) an : ');
                readln  (wert1);
                write   ('Geben sie die Seite (b) an : ');
                readln  (wert2);
                write   ('Geben sie die Seite (c) an : ');
                readln  (wert3);

                ergebnis := wert1*wert2*wert3;
                writeln ('Das Volumen des Quaders betraegt: ',ergebnis);
                end;

        end;
4:
        begin
        Writeln ('Sie haben sich fuer die Kugel entschieden');
        writeln ('1> Oberflaeche ');
        writeln ('2> Volumen ');
        writeln ('Was moechten sie nun Ausrechnen? Geben Sie die jeweilige Ziffer ein!');
        readln  (auswahl2);


                if auswahl2 = 1 then
                begin;
                writeln ('Sie haben sich fuer die Oberflaeche entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen Variablen an ');
                write ('Radius (r): ');
                readln (wert1);

                ergebnis := 4*PI*(wert1*wert1);
                writeln ('Die Oberflaeche der Kugel betraegt: ',ergebnis);
                end;




                if auswahl2 = 2 then
                begin;
                writeln ('Sie haben sich fuer das Volumen entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen Variablen an ');
                write ('Radius (r): ');
                readln (wert1);

                //ergebnis := 4/3*PI*(wert1*wert1*wert1);
                ergebnis := ((2*wert1)*(2*wert1)*(2*wert1))/6;

                writeln ('Das Volumen der Kugel betraegt: ',ergebnis);
                end;

        end;



end;

readln;
end.

Hier etwas abgekurtzt nur auf Case 4 beschränkt


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:
program Vol;

{$APPTYPE CONSOLE}

var auswahl1, auswahl2, ergebnis, wert1, wert2, wert3, wert4 :integer;
CONST PI=3.1415;

begin
writeln ('Das Programm berechnet das Volumen oder die Obeflaeche der nachfolgenden Koerper' );
writeln ('1> Zylinder ');
writeln ('2> Wuerfel ');
writeln ('3> Quader ');
writeln ('4> Kugel ');
write   ('Zur Auswahl der Koerpers geben sie die jeweilige Ziffer ein! ');
readln  (auswahl1);
case (auswahl1) of
1:
        begin
        Writeln ('Sie haben sich fuer die Kugel entschieden');
        writeln ('1> Oberflaeche ');
        writeln ('2> Volumen ');
        writeln ('Was moechten sie nun Ausrechnen? Geben Sie die jeweilige Ziffer ein!');
        readln  (auswahl2);


                if auswahl2 = 1 then
                begin;
                writeln ('Sie haben sich fuer die Oberflaeche entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen Variablen an ');
                write ('Radius (r): ');
                readln (wert1);

                ergebnis := 4*PI*(wert1*wert1);
                writeln ('Die Oberflaeche der Kugel betraegt: ',ergebnis);
                end;




                if auswahl2 = 2 then
                begin;
                writeln ('Sie haben sich fuer das Volumen entschieden ');
                writeln ('Bitte geben sie die folgenden geometrichen Variablen an ');
                write ('Radius (r): ');
                readln (wert1);

                //ergebnis := 4/3*PI*(wert1*wert1*wert1) nicht relevant...!;
                ergebnis := ((2*wert1)*(2*wert1)*(2*wert1)/6);

                writeln ('Das Volumen der Kugel betraegt: ',ergebnis);
                end;

        end;



end;
readln;
end.


jaenicke - So 04.12.11 16:52

Entweder nimmst du für das Ergebnis Single oder Double als Typ oder du rundest mit Round zuerst auf Integer. Denn wie du gemerkt hast, kannst du in einen Integerwert keine Kommazahl packen.


panic220 - So 04.12.11 18:16

Wie mach ich das mit Doble und Single? gibt es noch andere Formate die Kommastellen berechnen und Case of (Ordinaltypen oder so heißt das)?


jaenicke - So 04.12.11 18:32

user profile iconpanic220 hat folgendes geschrieben Zum zitierten Posting springen:
Wie mach ich das mit Doble und Single?
Wie du Variablen deklarierst findest du hier:
http://www.delphi-treff.de/object-pascal/variablen-und-konstanten/

user profile iconpanic220 hat folgendes geschrieben Zum zitierten Posting springen:
gibt es noch andere Formate die Kommastellen berechnen und Case of (Ordinaltypen oder so heißt das)?
Das case of hat doch mit dem Problem gar nichts zu tun.


panic220 - So 04.12.11 20:52

ICh kann formate wie Real garnicht Wehlen Formate die Kommas berechnen


newi10 - So 04.12.11 20:57

Hallo panic,

dein problem liegt darin, das deine variable ergebnis vom typ integer ist- das wird immer
zu einer fehlermeldung führen und zu einem abbruch

nimm deine ergebnis variable aus der obigen deklarations-zeile heraus und schreibe neu unter dieser Zeile

ergebnis:real;

wenn du jetzt im programm multiplizierst z.b mit pi , welches ja eine kommazahl ist -kann die variable jetzt das komma-ergebnis aufnehmen und verarbeiten-- wahrscheinlich bist du javascript oder vbscript gewöhnt hier passen sich
die variablen automatisch an - in pascal muss man leider vorher alles genau vordefinieren - ich hoffe ich konnte
dir etwas weiterhelfen

gruss newi10


panic220 - So 04.12.11 21:19

Danke an euch beide das Problem ist gelöst sowohl der letzte Beitrag auch als die Beitrege zu vor mit dem guten Links warhren sehr hilfreich :P