Autor Beitrag
Sanne
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 22:25 
ausblenden volle Höhe 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:
var
groesse:                          integer;
aktgroesse:                       integer;
scheibe:                          array of tshape;
i:                                longint;
scheibe1,scheibe2,scheibe3,scheibe4,scheibe5,scheibe6,scheibe7,scheibe0:    integer ;
begin
DBcheckbox1.checked:=false;
DBcheckbox2.checked:=false;
DBcheckbox3.checked:=false;
DBcheckbox4.checked:=false;
DBcheckbox5.checked:=false;
DBcheckbox6.checked:=false;
DBcheckbox7.checked:=false;
DBcheckbox8.checked:=false;

scheibe7:=128;
scheibe6:=64;
scheibe5:=32;
scheibe4:=16;
scheibe3:=8;
scheibe2:=4;
scheibe1:=2;
scheibe0:=1;

groesse:=strtoint(label9.caption);

aktgroesse:=0;
i:=7;

begin

repeat
aktgroesse:=aktgroesse+scheibe[i];
if groesse<aktgroesse then
aktgroesse:=aktgroesse-scheibe[i];
dec[i];
until i<0;

ok:=groesse>aktgroesse;
if ok then

      case i of
      1:DBcheckbox1.checked:=true;
      2:DBcheckbox2.checked:=true;
      3:DBcheckbox3.checked:=true;
      4:DBcheckbox4.checked:=true;
      5:DBcheckbox5.checked:=true;
      6:DBcheckbox6.checked:=true;
      7:DBcheckbox7.checked:=true;
      8:DBcheckbox8.checked:=true;
      end;
end;
end;


das ist der quelltext wie ihn mir mein prof gestern gegeben hat- ich denke das hauptproblem liegt an dem blöden dec und den eckigen klammern- kann mir irgendwie nicht vorstellen daß der quelltext einigermaßen funktionieren könnte- aber vielleicht wißt ihr das besser
auf jeden fall werden mir zig fehler angezeigt und ich weiß überhaupt nicht mehr was ich machen soll :(
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Mi 18.12.02 22:31 
ausblenden volle Höhe 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:
var
groesse:                          integer;
aktgroesse:                       integer;
scheibe:                          array of tshape;
i:                                longint;
scheibe: array[0..7] of   integer ;
begin
DBcheckbox1.checked:=false;
DBcheckbox2.checked:=false;
DBcheckbox3.checked:=false;
DBcheckbox4.checked:=false;
DBcheckbox5.checked:=false;
DBcheckbox6.checked:=false;
DBcheckbox7.checked:=false;
DBcheckbox8.checked:=false;

scheibe7:=128;
scheibe6:=64;
scheibe5:=32;
scheibe4:=16;
scheibe3:=8;
scheibe2:=4;
scheibe1:=2;
scheibe0:=1;

groesse:=strtoint(label9.caption);

aktgroesse:=0;
i:=7;

repeat
aktgroesse:=aktgroesse+scheibe[i];
if groesse<aktgroesse then
aktgroesse:=aktgroesse-scheibe[i];
dec(i);
until i<0;

if groesse>aktgroesse then

      case i of
      1:DBcheckbox1.checked:=true;
      2:DBcheckbox2.checked:=true;
      3:DBcheckbox3.checked:=true;
      4:DBcheckbox4.checked:=true;
      5:DBcheckbox5.checked:=true;
      6:DBcheckbox6.checked:=true;
      7:DBcheckbox7.checked:=true;
      8:DBcheckbox8.checked:=true;
      end;
end;

Das Gröbste müsste raus sein.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 22:32 
Wie lauten die Fehlermeldungen (mit Zeilenangabe)?. Was soll das Programm machen? Was soll in diesem Code-Abschnitt passieren? Kannst du es irgendwo hochladen mit Sourcen?
Sanne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 22:36 
ich probiers mal kurz so aus... dann sag ich dir mehr- danke
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Mi 18.12.02 22:39 
Also nur mal überflogen.

Folgende Fehler bzw Unsinnigkeiten:

1. Das Begin vor dem repeat brauchst Du nicht. Und dann natürlich auch nicht das dazugehörige end;

2. Der Ausdruck Scheibe[i] ist für den Zugriff auf eine Array-Variable.
Scheibe ist aber kein Array, sondern einzelne Variablen Scheibe1, Scheibe2,...

Vorschlag: Definiere Scheibe als Array.
var Scheibe : Array[0..7] of Integer;
Dann musst Du aber auch die Zuweisungen ändern in Scheibe[1] := 2; usw. Dafür funktioniert dann aber das mit Scheibe[i].

3. Dec[i] muß definitiv mit runden Klammern geschrieben werden.

4. Wird nach verlassen der repeat..until Schleife i immer kleiner 0 sein.
Was also erwartest Du für Werte im case i of?

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Sanne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 22:40 
ausblenden Quelltext
1:
scheibe: array[0..7] of   integer ;					

Bezeichner redefiniert

sonst müßte es passe- ist der einzige fehler den der noch anzeigt
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Mi 18.12.02 22:45 
Hast Du Scheibe schonmal definiert? Vielleicht als Globale Variable?

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Jack Falworth
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 222

Win XP Pro, Slackware 10.0
D5 Enterprise, C++, ABAP
BeitragVerfasst: Mi 18.12.02 22:45 
Die Variablen Scheibe1 bis Scheibe0 löschen und nur das Array stehen lassen, dann klappts.


MfG

Jack Falworth
Sanne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 22:50 
bin irgendwie total überfragt- hab echt keinen plan- jetzt sieht das ganze so aus:

ausblenden volle Höhe 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:
var
groesse:                          integer;
aktgroesse:                       integer;
i:                                longint;
scheibe: array[0..7] of   integer ;
ok:      integer;
begin
DBcheckbox1.checked:=false;
DBcheckbox2.checked:=false;
DBcheckbox3.checked:=false;
DBcheckbox4.checked:=false;
DBcheckbox5.checked:=false;
DBcheckbox6.checked:=false;
DBcheckbox7.checked:=false;
DBcheckbox8.checked:=false;

scheibe[7]:=128;
scheibe[6]:=64;
scheibe[5]:=32;
scheibe[4]:=16;
scheibe[3]:=8;
scheibe[2]:=4;
scheibe[1]:=2;
scheibe[0]:=1;

groesse:=strtoint(label9.caption); 

aktgroesse:=0; 
i:=7;

repeat
aktgroesse:=aktgroesse+scheibe[i]; 
if groesse<aktgroesse then
aktgroesse:=aktgroesse-scheibe[i]; 
dec(i);
until i<0; 

ok:=groesse>aktgroesse;
if ok then 
      case i of
      1:DBcheckbox1.checked:=true;
      2:DBcheckbox2.checked:=true; 
      3:DBcheckbox3.checked:=true;
      4:DBcheckbox4.checked:=true; 
      5:DBcheckbox5.checked:=true;
      6:DBcheckbox6.checked:=true; 
      7:DBcheckbox7.checked:=true;
      8:DBcheckbox8.checked:=true; 
      end;
end;

hab noch das mit dem ok reingebracht....
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 22:52 
ausblenden Quelltext
1:
scheibe: array of TShape;					

Da hat sie die Scheiben schon mal deklariert.

Vorschlag:
ausblenden Quelltext
1:
2:
shScheibe: array of TShape;
intScheibe: array[0..6] of Integer;
Sanne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 22:52 
und jetzt geht gar nichts mehr- er meckert beim ok das integer und boolean nicht zusammenpassen- daß der ausdruck boolean sein muß...
ich mag nimmer :(
Sanne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 22:54 
muß ich denn beides schrieben oder kann ich einfach das
scheibe: array of tshape;
löschen?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 18.12.02 22:57 
ausblenden Quelltext
1:
2:
ok:=groesse>aktgroesse; 
if ok then


OK ist ein Integer, du machst ja auch einen Vergleich, der so in Ordnung ist, nur eine if-Abfrage kann nur wahr/falsch sein. Und wenn OK den Wert 10 hat, wie soll denn dann if entscheiden ob es wahr oder falsch ist?
Folgendes geht dann natürlich wieder:
ausblenden Quelltext
1:
if ok < 999 then					

Sollte es tun. Oder je nach dem was passieren soll, könnte ich mir auch das vorstellen:
ausblenden Quelltext
1:
if groesse > aktgroesse then					


Zuletzt bearbeitet von Luckie am Mi 18.12.02 23:01, insgesamt 1-mal bearbeitet
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Mi 18.12.02 23:00 
Also zumindest innerhalb des geposteten Qodes benützt Du das Scheibe nicht als TShape.
Somit können wir nur raten.
Aber dann nenne doch das Scheibenarray für den Integer einfach um in Scheibengroesse : Array[0..7] of integer;
Du darfst eben jeden Variablennamen nur einmal verwenden.
Klar, sonst weis er ja nicht, ob Du nun das Schape oder die Zahl willst...

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Sanne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 23:01 
ist dann ok boolean und nicht integer oder was? jetzt blick ich gar nichts mehr
Sanne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 23:03 
jetzt klappts...
Sanne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 23:06 
aber jetzt hab ich noch folgendes problem
die checkboxes machen nichts.... bei jedem i bei dem groesse>aktgroesse ist sollte die dazugehörige checkbox aktiviert werden.... macht´s aber nicht :(
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Mi 18.12.02 23:06 
Bleibt nur noch die rage was Du in der case abfrage abfragen willst.
i wird zu diesem Zeitpunkt wohl immer kleiner 0 sein. Also niemals zwischen 1 und 8...

Was hast denn damit vor? Irgendeinen Zusand visualisieren?

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."
Sanne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 30



BeitragVerfasst: Mi 18.12.02 23:11 
ja genau das.... er soll anzeigen welche scheiben er in der rechnung verwendet hat- die für groesse>aktgroesse gelten
also zb. scheibe1, scheibe 3, scheibe 4 und scheibe 7- dann soll dementsprechend die checkbox 1, 3, 4 und 7 aktiviert werden
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: Mi 18.12.02 23:14 
Dann musst Du die Checkboxen innerhalb der Schleife setzen.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
repeat
  aktgroesse:=aktgroesse+scheibe[i];
  TDBcheckbox(FindComponent('DBcheckbox' + IntToStr(i))).checked := true;
  if groesse<aktgroesse then begin
    aktgroesse:=aktgroesse-scheibe[i];
    TDBcheckbox(FindComponent('DBcheckbox' + IntToStr(i))).checked := false;
  end;
  dec(i);
until i<0;

Ist aber auf die schnelle ungetestet.

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."