Autor Beitrag
realityking
Hält's aus hier
Beiträge: 12

Windows 2000, Windows XP, Debian 3.1, Mac OS X 10.4
Delphi 7 Personal
BeitragVerfasst: Di 29.05.07 19:18 
Hi,

kann man den folgenden Code iregnwie kürzer/übersichtlicher darstellen?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
  ColorCorrect := 0;
  Placecorrect := 0;
  if ValuePin1 = 0 then
    inc(PlaceCorrect)
  else if ValuePin1 = 1 then
    inc(ColorCorrect);
  if ValuePin2 = 0 then
    inc(PlaceCorrect)
  else if ValuePin2 = 1 then
    inc(ColorCorrect);
  if ValuePin3 = 0 then
    inc(PlaceCorrect)
  else if ValuePin3 = 1 then
    inc(ColorCorrect);
  if ValuePin4 = 0 then
    inc(PlaceCorrect)
  else if ValuePin4 = 1 then
    inc(ColorCorrect);


Danke für eure Hilfe :)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 29.05.07 19:23 
Moin!

Wie wäre es mit: ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
ColorCorrect := Integer(ValuePin1 = 0
               +Integer(ValuePin2 = 0)
               +Integer(ValuePin3 = 0)
               +Integer(ValuePin4 = 0);
Placecorrect := Integer(ValuePin1 = 1
               +Integer(ValuePin2 = 1)
               +Integer(ValuePin3 = 1)
               +Integer(ValuePin4 = 1);

Deutlich einfacher ginge es allerdings mit einem array... :?

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
realityking Threadstarter
Hält's aus hier
Beiträge: 12

Windows 2000, Windows XP, Debian 3.1, Mac OS X 10.4
Delphi 7 Personal
BeitragVerfasst: Di 29.05.07 19:43 
Schonmal danke für deine Hilfe :)

Was macht denn die Funktion Integer()?
Und wo du es andeutest, wie könnte man das denn mit einem array lösen?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 29.05.07 20:05 
Moin!

user profile iconrealityking hat folgendes geschrieben:
Was macht denn die Funktion Integer()?

Das ist keine Funktion, sondern ein Typecast von Booleanauf Integer, der für TRUE 1und für FALSE 0ergibt. ;)

user profile iconrealityking hat folgendes geschrieben:
Und wo du es andeutest, wie könnte man das denn mit einem array lösen?

Indem man z.B. diesen Crashkurs liest. :les: :mahn: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
realityking Threadstarter
Hält's aus hier
Beiträge: 12

Windows 2000, Windows XP, Debian 3.1, Mac OS X 10.4
Delphi 7 Personal
BeitragVerfasst: Di 29.05.07 20:14 
Danke für deine Hilfe, werde mich damit mal beschäftigen. Rein intressehalber: Welche von den 3 Möglichkeiten ist denn die schnellste/speichersparendste?
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 29.05.07 20:20 
Moin!

user profile iconrealityking hat folgendes geschrieben:
Danke für deine Hilfe,

Bitte. ;)

user profile iconrealityking hat folgendes geschrieben:
Rein intressehalber: Welche von den 3 Möglichkeiten ist denn die schnellste/speichersparendste?

3 Möglichkeiten? Hab doch nur zwei genannt... :gruebel:

Ich interpretiere mal in deine Frage, dass du wissen möchtest, was die effizienteste Lösung wäre ;) Also, vermutlich lassen sich die zwei Zählervariablen direkt mit den passenden Werten füllen, ohne die 4 Hilfsvariablen (und auch ohne array), also gleich beim Bestimmen des Zustandes der Benutzereingabe. :D

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
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 29.05.07 20:26 
Wenn Du nur die Werte 0 und 1 hast, kannst Du auch die zweite Anweisung einfach als 4 - ColorsCorrect; ausdrücken ...

Aber wie gesagt: Kommt halt ganz immer drauf an, wie die Daten im Programm vorliegen und wie die Abläufe dort aussehen ...

_________________
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.
realityking Threadstarter
Hält's aus hier
Beiträge: 12

Windows 2000, Windows XP, Debian 3.1, Mac OS X 10.4
Delphi 7 Personal
BeitragVerfasst: Mo 04.06.07 01:09 
Hi,

war mit Array eine Lösung wie folgt gemeint:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
for j := 1 to Pins do
begin
  if ValuePin[j] = 0 then
    inc(PlaceCorrect)
  else if ValuePin[j] = 1 then
    inc(ColorCorrect);
end;


Oder noch was anderes?