Autor Beitrag
DeadEyeFlint
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 03.07.08 09:37 
Hallo Liebe Community,

ich habe dank meines Informatikunterrichts angefangen mich mit delphi und pascal angefangen zu beschäftigen.

Meine Lehrerin gab mir eine Aufgabe die ich wie Ihr unten sehen könnt bearbeitet habe.

Und jetzt zu meiner Frage: Ich habe als Abfangung für leere Felder jetzt für jedes Feld einzeln eine if schleife eingebaut. Würe es auch gehen dass man da nur eine einbaut um den source code ein wenig zu verkürzen?


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:
procedure TForm1.Button1Click(Sender: TObject);

var a1,a2,a3,p1,p2,p3,g1,g2,g3,gs:real;



begin

          if ([edit_a_1.Text] ='') then

       begin
      showmessage('Bitte Feld "Anzahl" komplett ausfüllen.');
      exit;
      end;

      if (edit_a_2.Text ='') then

       begin
      showmessage('Bitte Feld "Anzahl" komplett ausfüllen.');
      exit;
      end;

      if (edit_a_3.Text ='') then

       begin
      showmessage('Bitte Feld "Anzahl" komplett ausfüllen.');
      exit;
      end;

       if (edit_p_1.Text ='') then

       begin
      showmessage('Bitte Feld "Preis pro Stück" komplett ausfüllen.');
      exit;
      end;


       if (edit_p_2.Text ='') then

       begin
      showmessage('Bitte Feld "Preis pro Stück" komplett ausfüllen.');
      exit;
      end;


       if (edit_p_3.Text ='') then

       begin
      showmessage('Bitte Feld "Preis pro Stück" komplett ausfüllen.');
      exit;
      end;




      a1:=strtofloat(edit_a_1.Text);
      a2:=strtofloat(edit_a_2.Text);
      a3:=strtofloat(edit_a_3.text);

      p1:=strtofloat(edit_p_1.text);
      p2:=strtofloat(edit_p_2.Text);
      p3:=strtofloat(edit_p_3.Text);


      


      g1:=a1*p1;
      g2:=a2*p2;
      g3:=a3*p3;

      edit_g_1.Text:=floattostr(g1);
      edit_g_2.Text:=floattostr(g2);
      edit_g_3.Text:=floattostr(g3);

      gs:=g1+g2+g3;

      edit_gs.Text:=floattostr(gs);


              

end;



Gruß DeadEyeFlint
Stefan-W
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 475

Win 7 SP1
D2005 PE
BeitragVerfasst: Do 03.07.08 09:40 
hier kannst du nur die If abfrage kürzen indem du die Meldungen zusammen fasst.
also erst auswerten und dann ne Meldung wie "bitte das, das und das noch richtig ausfüllen"
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 03.07.08 09:41 
Hallo und :welcome: in der Entwickler-Ecke!

Ja, da kann man was machen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if (edit_a_1.Text ='') 
OR (edit_a_2.Text ='')
OR (edit_a_3.Text ='')
then 
begin 
  showmessage('Bitte Feld "Anzahl" komplett ausfüllen.'); 
  exit; 
end;


btw.: www.if-schleife.de ;-)

_________________
We are, we were and will not be.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 03.07.08 09:42 
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:
procedure TForm1.Button1Click(Sender: TObject);
var a1,a2,a3,p1,p2,p3,g1,g2,g3,gs:real;
begin

 if (length(edit_a_1.Text) < 1) or 
    (length(edit_a_2.Text) < 1) or
    (length(edit_a_3.Text) < 1) or
    (length(edit_p_1.Text) < 1) or
    (length(edit_p_2.Text) < 1) or
    (length(edit_p_3.Text) < 1) then
 begin
  showmessage('Bitte alle Felder ausfüllen');
  exit;
 end;

 a1:=strtofloat(edit_a_1.Text);
 a2:=strtofloat(edit_a_2.Text);
 a3:=strtofloat(edit_a_3.text);

 p1:=strtofloat(edit_p_1.text);
 p2:=strtofloat(edit_p_2.Text);
 p3:=strtofloat(edit_p_3.Text);

 g1:=a1*p1;
 g2:=a2*p2;
 g3:=a3*p3;

 edit_g_1.Text:=floattostr(g1);
 edit_g_2.Text:=floattostr(g2);
 edit_g_3.Text:=floattostr(g3);
 
 gs:=g1+g2+g3;
 edit_gs.Text:=floattostr(gs);
end;


LG
Stefan

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
DeadEyeFlint Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 03.07.08 09:47 
Hehe okay Gausi if Abfrage ;)

Und danke an euch zwei für die schnellen Antworten. An das or hab ich auch schon gedacht und probiert aber dann hatte ich die Syntax falsch gesetzt.

Danke

Gruß DeadEye
robo202
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 67

win XP
Delphi 2005
BeitragVerfasst: Do 03.07.08 11:49 
WEnn du deine Eingabe felder anders nennst dann ist es ganz einfach

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var i:integer;
begin
for i := 1 to 4 do begin
If (edit(i)).text = '' then 
begin
showmessage ('Bitte eingaben überprüfen');
exit;
end;


End;


glaube ich jedenfals :?
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 03.07.08 11:53 
user profile iconrobo202 hat folgendes geschrieben:
glaube ich jedenfals :?

:lol:

Code schon mal ausprobiert?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var i: Integer;
      myCompo: TComponent;
begin
 for i:= 1 to 4 do
 begin
  myCompo:= findcomponent('Edit' + inttostr(i));
  if length((myCompo as TEdit).Text) < 1 then
  begin
   //Fehlerbehandlung
  end;
 end;


Moderiert von user profile iconNarses: Zitat gekürzt

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
DeadEyeFlint Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 03.07.08 12:41 
okay sieht auch ganz gut aus ^^

aaaber, wie gesagt hab ich mit delphi und pascal erst emgefangen.

var mycompo ... um ehrlich zu sein kann ich damit nichts anfangen. ich hab schon gidf.de befragt. aber ich habe nich wirklich viel gefunden.

und diese if abfrage " if length((myCompo as TEdit).Text) < 1 then" hab ich auch noch nich ganz verstanden


gruß DeadEye
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 03.07.08 13:22 
@robo202: so mach ich das meistens, die Komponenten als array auffassen (natürlich mit [] und nicht mit runden Klammern). Aber dazu muss man sich erst ein Array aus Zeigern erstellen, und diese mit den Komponenten verknüpfen.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Do 03.07.08 13:30 
Das mit dem FindComponent würde ich an dieser Stelle sein lassen. Das ist nur sinnvoll, wenn man wirklich viele Edits (oder sonstwas) hat, und dann würde ich auch in der Regel die Variante mit dem selbsterstellten Array vorziehen.

Bei so wenigen ist es imho sinnvoller (und auch für Anfänger verständlicher) das direkt zu machen.

_________________
We are, we were and will not be.
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 03.07.08 13:37 
user profile iconGausi hat folgendes geschrieben:
Das mit dem FindComponent würde ich an dieser Stelle sein lassen. Das ist nur sinnvoll, wenn man wirklich viele Edits (oder sonstwas) hat, und dann würde ich auch in der Regel die Variante mit dem selbsterstellten Array vorziehen.

Bei so wenigen ist es imho sinnvoller (und auch für Anfänger verständlicher) das direkt zu machen.


Würd ich auch sagen, aber ich hab nur das Beispiel verbessert ;-)

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Do 03.07.08 13:45 
user profile iconGausi hat folgendes geschrieben:

btw.: www.if-schleife.de ;-)


[ot]

OMG! Wer gibt min. 15 €uro für ne Top-Level-Domain aus für sowas. Das is doch schon ein bisschen absurd. Auch wens ein wenig lustig ist.

[/ot]

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Tilman
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1405
Erhaltene Danke: 51

Win 7, Android
Turbo Delphi, Eclipse
BeitragVerfasst: Do 03.07.08 13:56 
user profile iconelundril hat folgendes geschrieben:

OMG! Wer gibt min. 15 €uro für ne Top-Level-Domain aus für sowas. Das is doch schon ein bisschen absurd. Auch wens ein wenig lustig ist.


Irgendwo muss es Leute geben die so was lustig finden.

btw. ist der Satz "Es gibt keine if-Schleifen, sondern nur if-Abfragen!" in meinen Augen ungünstig formuliert, er hätte lauten sollen "Es gibt keine if-Schleifen, sondern nur if-Blöcke!", denn die Anfänger verwechseln in meinen Augen Schleife und Block.

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)


Zuletzt bearbeitet von Tilman am Do 03.07.08 13:58, insgesamt 1-mal bearbeitet
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Do 03.07.08 13:57 

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Do 03.07.08 14:11 
user profile iconelundril hat folgendes geschrieben:
OMG! Wer gibt min. 15 €uro für ne Top-Level-Domain aus für sowas. Das is doch schon ein bisschen absurd. Auch wens ein wenig lustig ist.

Nun ja, bei manchen Hosting-Paketen hast du mehrere Inklusiv-Domains, brauchst aber u.U. nur eine - und dann ist Platz für sowas.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 03.07.08 14:21 
Moin!

Bitte zurück zum Thema! :mahn: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.