Autor Beitrag
ralle90
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 01.03.09 21:36 
soll folgendes programm mit delphi schreiben

hab im anhang die exe
soll möglichst kurzer effizienter weg sein und soll mit parameterübergabe programmiert werden

wollte es mit mod und div machen ist aber ein sehr langer weg

wie würdet ihr das lösen?
wenn möglich nur mit datentypen string, integer und real

danke
Einloggen, um Attachments anzusehen!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 01.03.09 21:46 
Hallo user profile iconralle90,

in diesem Forum wird es äußerst ungern gesehen, wenn nach fertigen Programmen, vorgefertigten Sources oder der Lösung der eigenen Hausaufgaben gefragt wird. Eines dieser drei Dinge hast Du gerade versucht, weshalb Du hiermit freundlich darauf hingewiesen werden sollst, dass in diesem Forum Freiwillige sitzen, die bei ausreichendem Entgegenkommen gerne helfen.

Bitte zeige etwas mehr Eigeninitiative als gewöhnlich, zeige uns deine bisherigen Versuche und sei entgegenkommend. Es wird Dir keiner ein Bein abreißen oder den Kopf abhacken, wenn dein Quelltext nicht 100% optimiert, performant und korrekt ist. Auch möchtest Du hier Hilfe bekommen, weshalb wir auf deine Mithilfe bei der Problemanalyse angewiesen sind.

Unsere Glaskugeln sind auf Grund der Vielzahl an Einsätzen meistens zur Reparatur, verborgt, auf Urlaub oder anderweitig nicht einsatzbereit. Daher möchten wir dich bitten, uns das Herumraten durch ausreichend Informationen zum Problem und deinem Source zu vermeiden.

Auch handelt es sich bei der Entwickler-Ecke nicht um eine ausgegliederte Deciphrier-Abteilung irgendeines Geheimdienstes, weshalb wir nicht auf die Entschlüsslung kryptischer Aneinanderreihungen von Buchstaben spezialisiert sind. Formatiere daher deinen Quelltext mit [delphi]-Tags, um eine Farbhervorhebung zu veranlassen. Außerdem kannst Du die Lesbarkeit durch das gezielte Verwenden von Leerzeichen zur Einrückung deutlich erhöhen.

Hauptanliegen sollte dabei nicht sein, dein Problem an sich zu lösen, sondern Dir zu erklären, wie Du dieses beim nächsten Mal selbstständig finden und beheben kannst. Verzichte daher im eigenen Interesse darauf, eine fertige Lösung einfach nur zu kopieren - beim nächsten Mal stehst Du vor genau dem gleichen Problem!

MfG,
BenBE.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
ralle90 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 02.03.09 18:47 
sorry, hab bereits ein programm für die exe geschrieben
ist aber ganz schön lang denke ich
kann man das prog noch irgendwie vereinfachen
vor allem die procedure berechnen ist ja sehr umfangreich.
gibt es da noch eine andere möglichkeit vielleicht mit schleifen oder so

hier mein delphi 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:
113:
procedure berechnen1 (restbetrag:integer);

// berechnung und ausgabe des restbetrages

VAR
rest1:string;
ausgabe,ausgabe1:real;

begin

rest1:=inttostr(restbetrag);
ausgabe:=strtofloat(rest1);

ausgabe1:=ausgabe/100;
form1.edit3.text:=floattostr(ausgabe1);

end;


procedure berechnen (restbetrag:integer);

// berechnung und ausgabe der scheine un münzen mit befehl mod und div

VAR
hundert,fuenfzig,zwanzig,zehn,fuenf,zwei,eins,fcent,zcent,zehncent,fuenfcent,zweicent,cent,
hundert1,fuenfzig1,zwanzig1,zehn1,fuenf1,zwei1,eins1,fcent1,zcent1,zehncent1,fuenfcent1,zweicent1,cent1:integer;

begin

hundert :=restbetrag    mod 10000;
hundert1:=restbetrag    DIV 10000;
form1.Panel1.Caption:=inttostr(hundert1);

fuenfzig :=hundert      mod  5000;
fuenfzig1:=hundert      DIV  5000;
form1.Panel2.Caption:=inttostr(fuenfzig1);

zwanzig :=fuenfzig      mod  2000;
zwanzig1:=fuenfzig      DIV  2000;
form1.Panel3.Caption:=inttostr(zwanzig1);

zehn :=zwanzig          mod  1000;
zehn1:=zwanzig          DIV  1000;
form1.Panel4.Caption:=inttostr(zehn1);

fuenf :=zehn            mod   500;
fuenf1:=zehn            DIV   500;
form1.Panel5.Caption:=inttostr(fuenf1);

zwei :=fuenf            mod   200;
zwei1:=fuenf            DIV   200;
form1.Panel6.Caption:=inttostr(zwei1);

eins :=zwei             mod   100;
eins1:=zwei             DIV   100;
form1.Panel7.Caption:=inttostr(eins1);

fcent:=eins             mod   50;
fcent1:=eins            DIV   50;
form1.Panel8.Caption:=inttostr(fcent1);

zcent :=fcent           mod   20;
zcent1:=fcent           DIV   20;
form1.Panel9.Caption:=inttostr(zcent1);

zehncent :=zcent        mod   10;
zehncent1:=zcent        DIV   10;
form1.Panel10.Caption:=inttostr(zehncent1);

fuenfcent :=zehncent    mod   5;
fuenfcent1:=zehncent    DIV   5;
form1.Panel11.Caption:=inttostr(fuenfcent1);

zweicent :=fuenfcent    mod   2;
zweicent1:=fuenfcent    DIV   2;
form1.Panel12.Caption:=inttostr(zweicent1);

cent :=zweicent         mod   1;
cent1:=zweicent         DIV   1;
form1.Panel13.Caption:=inttostr(cent1);


end;


procedure TForm1.berechneClick(Sender: TObject);
var 
a,b,g,h:real;
    d,f:string;
    i,j,restbetrag:integer;

begin

// umwandlung der eingabe a und b zu integer und parameterübergabe an beiden ersten proceduren

a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);

g:=a*100;
h:=b*100;

d:=floattostr(g);
f:=floattostr(h);

i:=strtoint(d);
j:=strtoint(f);

restbetrag:=(j-i);

berechnen(restbetrag);
berechnen1(restbetrag);

end;


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


Zuletzt bearbeitet von ralle90 am Mo 02.03.09 20:18, insgesamt 1-mal bearbeitet
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 02.03.09 18:57 
Könntest Du deinen Source bitte in [Delphi]-Tags einschließen, wie ich es oben vorgeschlagen hab. Das macht den Source wesentlich lesbarer.

Und bzgl. Optimierung fallen mir schon jetzt eine ganze Reihe von Dingen auf:
- Greife nicht auf FormXY direkt zu, wenn Du es vermeiden kannst. Das ist ein absolut schlechter Stil
- Benutze Variablen mehrfach, wenn Du kannst und dies sinnvoll ist. Z.B. für die Münz-Rückgabe kann man hier sehr viel Kot einsparen

Gruß,
BenBE.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
ralle90 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 02.03.09 20:22 
danke für deine hilfe und anmerkungen. versuche es besser zu machen

zu deinen tipps kannst du mir die bitte genauer erklären oder am quelltext aufzeigen
weiß nämlich nicht genau was du meinst
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 02.03.09 20:50 
Also nehmen wir einmal folgendes an:
Ich habe eine Liste mit den verschiedenen Optionen für das Wechselgeld.

Anstatt, dass ich jetzt für jede dieser Optionen explizit hinschreibe, dass ich 5ct haben möchte gehe ich einfach von der höchstmöglichen Ausgabe aus und reduziere dann immer, wenn nötig.

Dazu nehmen wir einmal an, ich habe ein Array, das wie folgt deklariert ist:
ausblenden Delphi-Quelltext
1:
2:
3:
type
    TGeldEinheit = Integer;
    TGeldEinheitenArray = array of TGeldEinheit;


Im Euro-Raum sind folgende Werte definiert:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
const
    EuroEinheiten: TGeldEinheitenArray = (
        125102050100200500100020005000100002000050000
        );


Gehen wir nun weiter davon aus, dass ich einen bestimmten Restbetrag als Wechsegeld herausgeben muss und nun eine Funktion haben möchte, die mir genau dies berechnet, wie die Verteilung aussehen muss, dann könnte ich dies wie folgt tun:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
Function GetWechselgeld(Betrag: TGeldEinheit; Optionen: TGeldEinheitenArray): TGeldEinheitenArray;
var
    X: Integer;
Begin
    SetLength(Result, Length(Optionen));
    X := High(Result);
    While (X >= 0and (Betrag > 0do
    Begin
        IF Optionen[X] < Betrag Then
        Begin
            Result[X] := Betrag div Optionen[X];
            Betrag := Betrag mod Optionen[X];
        end;
        Dec(X);
    end;
end;


Beim Aufruf dieser Funktion erhälst Du ein Array in dem jeder Möglichkeit Geldstücke oder -scheine zu verteilen die Anzahl der zugewiesenen Entitäten angegeben ist.

Die Ausgabe auf deinem Formular kann nun so aussehen:

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:
Procedure TForm1.GetWechselgeld(Sender: TObject);
var
    GEZ, Preis: TGeldEinheit;
    WG: TGeldEinheitenArray;
begin
    GEZ := StrToIntDef(Gezahlt.Caption, 0);
    Preis := StrToTintDef(Preis.Caption, 0);
    WG := GetWechselgeld(GEZ - Preis, EuroEinheiten);
    RueckGeldStapel.Items.BeginUpdate;
    try
        RueckGeldStapel.Items.Clear;
        For X := Low(EuroEinheiten) to High(EuroEinheiten) do
        Begin
            RueckGeldStapel.Items.Add(Format('%d * %d%s', [
                WG[X], 
                IIf(EuroEinheiten[X] >= 100, EuroEinheiten[X] div 100, EuroEinheiten[X]), 
                IIf(EuroEinheiten[X] >= 100',- Euro'' Cent')]));
        end;
    finally
        RueckGeldStapel.Items.EndUpdate;;
    end;
end;


Den Rest findest Du sicherlich selber noch raus ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
ralle90 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.03.09 19:10 
sorry, aber ich glaube das ist für mich zu hoch
trozdem danke für deine hilfe
hab wirklich nur wenig ahnung von delphi
kannste mir noch verbesserungsvorschläge für meinen quelltext machen?
hast was von variablen gesagt, die man öfter verwenden könne
und gibt es noch andere dinge die besser oder einfacher darzustellen gehen
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 03.03.09 19:15 
Deiune Variablennamen in berechneClick dürften etwas aussagekräftiger sein. Da dürfen es ruhig mehr als nur ein Zeichen sein - auch in der Wirtschaftskrise, denn aussagekräftige Variablennamen kosten nichts.

Ferner: Schau Dir mal die Funktion Trunc bzw. Round an.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
ralle90 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 03.03.09 19:47 
wenn ich aber round oder trunc benutze fehlen mir doch die kommastellen. wird dann meine ausgabe des restbetrages dann nicht auch gerundet?
dann spielen doch die cent keine rolle mehr?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 03.03.09 19:48 
Du kannst bei Round die Anzahl der Nachkommastellen angeben. Siehe Delphi-Hilfe.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
GTA-Place
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
EE-Regisseur
Beiträge: 5248
Erhaltene Danke: 2

WIN XP, IE 7, FF 2.0
Delphi 7, Lazarus
BeitragVerfasst: Di 03.03.09 20:14 
Heißt dann aber nicht mehr Round sondern RoundTo.

_________________
"Wer Ego-Shooter Killerspiele nennt, muss konsequenterweise jeden Horrorstreifen als Killerfilm bezeichnen." (Zeit.de)
ralle90 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Fr 06.03.09 17:50 
habe noch nicht andere möglichkeit gefunden das programm zu schreiben
habt ihr däfür noch verbesserungsvorschläge. ist nämlich wieder ziemlich lang

hier der 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:
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:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label16: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Label27: TLabel;
    Label28: TLabel;
    Label29: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Label34: TLabel;
    Label1: TLabel;
    Label20: TLabel;
    Label35: TLabel;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
PROCEDURE ausgabe (restbetrag:integer);
VAR
rest1:string;
ausgabe,ausgabe1:real;
begin
rest1:=inttostr(restbetrag);
ausgabe:=strtofloat(rest1);

ausgabe1:=ausgabe/100;
form1.edit3.text:=floattostr(ausgabe1)+ ' €';

if ausgabe1>0 then
form1.Label34.Caption:='Sie bekommen '+ floattostr(ausgabe1)+ '€  zurück!'
              else
form1.Label34.Caption:='Stimmt genau!';
end;

procedure ermitteln (restbetrag:integer);
var hundert,fuenfzig,zwanzig,zehn,fuenf,zwei,ein,fuenfzigc,zwanzigc,zehnc,fuenfc,zweic,einc:integer;
begin
hundert        :=0;
fuenfzig       :=0;
zwanzig        :=0;
zehn           :=0;
fuenf          :=0;
zwei           :=0;
ein            :=0;
fuenfzigc      :=0;
zwanzigc       :=0;
zehnc          :=0;
fuenfc         :=0;
zweic          :=0;
einc           :=0;


while restbetrag>0      do

                        if (restbetrag>=10000)  then
                                                begin
                                                restbetrag:=restbetrag-10000;
                                                hundert:=hundert+1;
                                                end

                                                else
                                                if (restbetrag>=5000)   then
                                                                        begin
                                                                        restbetrag:=restbetrag-5000;
                                                                        fuenfzig:=fuenfzig+1;
                                                                        end

                                                                        else

                                                                        if (restbetrag>=2000)   then
                                                                                                begin
                                                                                                restbetrag:=restbetrag-2000;
                                                                                                zwanzig:=zwanzig+1;
                                                                                                end

                                                                                                else

                                                                                                if (restbetrag>=1000)   then
                                                                                                                        begin
                                                                                                                        restbetrag:=restbetrag-1000;
                                                                                                                        zehn:=zehn+1;
                                                                                                                        end

                                                                                                                        else
                                                                                                                        if (restbetrag>=500)    then
                                                                                                                                                begin
                                                                                                                                                restbetrag:=restbetrag-500;
                                                                                                                                                fuenf:=fuenf+1;
                                                                                                                                                end

                                                                                                                                                else
                                                                                                                                                if (restbetrag>=200)    then
                                                                                                                                                begin
                                                                                                                                                restbetrag:=restbetrag-200;
                                                                                                                                                zwei:=zwei+1;
                                                                                                                                                end

                                                                                                                                                else
                                                                                                                                                if (restbetrag>=100)    then
                                                                                                                                                                        begin
                                                                                                                                                                        restbetrag:=restbetrag-100;
                                                                                                                                                                        ein:=ein+1;
                                                                                                                                                                        end

                                                                                                                                                                        else
                                                                                                                                                                        if (restbetrag>=50)     then
                                                                                                                                                                                                begin
                                                                                                                                                                                                restbetrag:=restbetrag-50;
                                                                                                                                                                                                fuenfzigc:=fuenfzigc+1;
                                                                                                                                                                                                end

                                                                                                                                                                                                else

                                                                                                                                                                                                if (restbetrag>=20)     then
                                                                                                                                                                                                                        begin
                                                                                                                                                                                                                        restbetrag:=restbetrag-20;
                                                                                                                                                                                                                        zwanzigc:=zwanzigc+1;
                                                                                                                                                                                                                        end

                                                                                                                                                                                                                        else
                                                                                                                                                                                                                        if (restbetrag>=10)     then
                                                                                                                                                                                                                                                begin
                                                                                                                                                                                                                                                restbetrag:=restbetrag-10;
                                                                                                                                                                                                                                                zehnc:=zehnc+1;
                                                                                                                                                                                                                                                end

                                                                                                                                                                                                                                                else
                                                                                                                                                                                                                                                if (restbetrag>=5)      then
                                                                                                                                                                                                                                                                        begin
                                                                                                                                                                                                                                                                        restbetrag:=restbetrag-5;
                                                                                                                                                                                                                                                                        fuenfc:=fuenfc+1;
                                                                                                                                                                                                                                                                        end

                                                                                                                                                                                                                                                                        else
                                                                                                                                                                                                                                                                        if (restbetrag>=2)      then
                                                                                                                                                                                                                                                                                                begin
                                                                                                                                                                                                                                                                                                restbetrag:=restbetrag-2;
                                                                                                                                                                                                                                                                                                zweic:=zweic+1;
                                                                                                                                                                                                                                                                                                end

                                                                                                                                                                                                                                                                                                else
                                                                                                                                                                                                                                                                                                if (restbetrag>=1)    then
                                                                                                                                                                                                                                                                                                begin
                                                                                                                                                                                                                                                                                                restbetrag:=restbetrag-1;
                                                                                                                                                                                                                                                                                                einc:=einc+1;
                                                                                                                                                                                                                                                                                                end;


form1.Label21.Caption:=inttostr(hundert);
form1.Label22.Caption:=inttostr(fuenfzig);
form1.Label23.Caption:=inttostr(zwanzig);
form1.Label24.Caption:=inttostr(zehn);
form1.Label25.Caption:=inttostr(fuenf);
form1.Label26.Caption:=inttostr(zwei);
form1.Label27.Caption:=inttostr(ein);
form1.Label28.Caption:=inttostr(fuenfzigc);
form1.Label29.Caption:=inttostr(zwanzigc);
form1.Label30.Caption:=inttostr(zehnc);
form1.Label31.Caption:=inttostr(fuenfc);
form1.Label32.Caption:=inttostr(zweic);
form1.Label33.Caption:=inttostr(einc);

end;




procedure TForm1.BitBtn1Click(Sender: TObject);
var fahrpreis,gezahlt,d,f:real;
    g,h:string;
    i,j,restbetrag:integer;


begin
try
fahrpreis:=strtofloat(edit1.text);
gezahlt:=strtofloat(edit2.text);

if  (fahrpreis>gezahlt)       then
                        begin
                        showmessage('Zu wenig Gezahlt');
                        form1.edit1.Clear;
                        form1.edit2.Clear;
                        form1.edit1.SetFocus
                        end

                ELSE

                                        if  (gezahlt<=0or (fahrpreis<=0)      then
                                                                                begin
                                                                                showmessage('Falsche Eingabe');
                                                                                form1.edit1.Clear;
                                                                                form1.edit2.Clear;
                                                                                form1.edit1.SetFocus;
                                                                                end

                                                                                else
                                                                                begin
                                                                                d:=fahrpreis*100;
                                                                                f:=gezahlt*100;

                                                                                g:=floattostr(d);
                                                                                h:=floattostr(f);

                                                                                i:=strtoint(g);
                                                                                j:=strtoint(h);

                                                                                restbetrag:=(j-i);

                                                                                ermitteln(restbetrag);
                                                                                ausgabe(restbetrag);
                                                                                end;


except
showmessage('Falsche Eingabe');
form1.Edit1.Clear;
form1.Edit2.Clear;
form1.Edit3.Clear;
form1.Edit1.setfocus;
END;
end;



procedure TForm1.BitBtn2Click(Sender: TObject);
begin
form1.Edit1.Clear;
form1.Edit2.Clear;
form1.Edit3.Clear;
form1.Edit1.setfocus;
form1.label21.Caption:=' ';
form1.label22.Caption:=' ';
form1.label23.Caption:=' ';
form1.label24.Caption:=' ';
form1.label25.Caption:=' ';
form1.label26.Caption:=' ';
form1.label27.Caption:=' ';
form1.label28.Caption:=' ';
form1.label29.Caption:=' ';
form1.label30.Caption:=' ';
form1.label31.Caption:=' ';
form1.label32.Caption:=' ';
form1.label33.Caption:=' ';
form1.Label34.Caption:=' ';
end;

end.


Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Jens Hartmann
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120

XP
Delphi
BeitragVerfasst: Fr 06.03.09 18:10 
Hallo,

als erstes würde ich Dir vorschlagen, wie oben schon mal erwähnt, die Anweisungen ohne Form zumachen.

[EDIT] Den Verweis auf eine Form macht man nur, wenn man mehrere Formen hat, und man aus der Form1 z.B. irgendwas aus der Form2 (Unit2) nutzen will.

Das ist interessant, wenn man sich selber Klassen schreibt oder so...

[EDITEND]

Dein Code...
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
except 
showmessage('Falsche Eingabe'); 
form1.Edit1.Clear; 
form1.Edit2.Clear; 
form1.Edit3.Clear; 
form1.Edit1.setfocus; 
END
end;


Neuer Code...

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
except 
showmessage('Falsche Eingabe'); 
Edit1.Clear; 
Edit2.Clear; 
Edit3.Clear; 
Edit1.setfocus; 
end;


Außerdem, würde ich auch den Komponenten Aussagekräftige Namen geben. Damit erreichst eine besser Übersicht.

Was auch immer Hilft, später ein Programm zu lesen, sind Kommentare.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Edit1.Text

//Besser (Das ist ein Kommentar)

EDCent.Text
ED1Euro.Text

{Das ist besser zu lesen
und so wäre das ein längere Kommentare}



Fang erst schon mal so an, dann ist dein Quellcode schon viel übersichtlicher.

PS: Du solltest auch das Einrücken der Codepassagen mal anpassen.

Und was oben schon mal erwähnt worden ist, Such mal nach Array´s hier im Forum, damit wird dein Code dann wesendlich kürzer.

Allerdings änder erstmal die anderen Sachen ab.

Gruß

Jens


Zuletzt bearbeitet von Jens Hartmann am Fr 06.03.09 18:14, insgesamt 1-mal bearbeitet
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 06.03.09 18:12 
Die Möglichkeit bzgl. der Verwendung von Arrays\Feldern, die ich oben erwähnt habe, stellt eine wesentliche Verkürzung dar.

Zu deinem Kot aber einen kleinen Hinweis: Bitte bei Einrückung immer nur genau 2 oder nur genau 4 Leerzeichen verwenden, da du ansonsten recht schnell horizontale Scrollbalken provozierst.

Ferner solltest Du Label und andere Komponenten immer nach ihrer Aufgabe benennen. Das verbessert die Verständlichkeit deines Sources ungemein.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
ralle90 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: So 08.03.09 16:12 
ok. danke
habe ich soweit gemacht.
hab jetzt noch ein drittes programm wo die berechnung in 13 while schleifen gelöst ist.
jetzt noch eine letzte frage an euch.
welche meiner varianten ist die beste oder effizienteste?
Die ertse mit mod und div
die zweite mit einer while schleife und den if anweisungen
oder die dritte mit 13 while schleifen

noch besser ist bestimmt eure lösung mit den arrays. aber das bekomme ich mit meinen kenntnissen nicht hin.
also was meint ihr?