Autor Beitrag
SRZ_DRESDEN
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Sa 16.10.10 12:24 
Hallo, ich habe einen kleinen script gemacht:
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:
procedure TForm1.Button1Click(Sender: TObject);
begin
i:= 1;
AB := strtoint(edit1.text);
AC := strtoint(edit2.text);
BA := strtoint(edit3.text);
BC := strtoint(edit4.text);
CA := strtoint(edit5.text);
CB := strtoint(edit6.text);

Avn :=0;
Bvn :=0;
Cvn :=0;

Azn :=0;
Bzn :=0;
Czn :=0;



for i := 1 to 6 do begin

    A :=  AB + AC;        //3
    B :=  BA + BC;        //7
    C :=  CA + CB;        //11

    //Benötige LKW 'S

    Azn :=  A - Avn;      // 3 - 0 =3
    Bzn :=  B - Bvn;      // 7 - 0 =7
    Czn :=  C - Cvn;      // 11 - 0= 11

    Avn := BA + CA ;
    Bvn := AB + CB;
    Cvn := AC + BC;

    label13.Caption := inttostr(Azn);
    label14.Caption := inttostr(Bzn);
    label15.Caption := inttostr(Czn);

end;

end;


, der mir ein par Zahlen ausrechnet.

wenn man jetzt folgende Werte einsetzt:

AB 1
AC 2
BA 3
BC 4
CA 5
CB 6


dann solte ja theoretich zum schluss (ine label 13 - 14) folgendes ausgegeben werden:

3 7 11

Doch leiter kommt -5 0 5 raus.

Wenn ich das Programm zwischendurdch anhalte, und schaue welchen wert im label gerade steht, dann steht auch da
3 7 11

. Was ist der Fehler?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 16.10.10 13:04 
Nach dem ersten Durchlauf der Schleife ist z.B. Avn nicht mehr Null, da passt deine Rechnung also schon nicht mehr.

Du hast da mehrere Probleme in dem Quelltext:
Erstens sind die Variablen und Komponenten schlecht bezeichnet, da weiß (außer dir im Moment noch) niemand was da eigentlich wo drin steht.
Zweitens benutzt du globale Variablen.
Und drittens: Wozu die Schleife und die vielen Zwischenvariablen? So wie es im Moment ist kann man die Rechnung auch deutlich vereinfachen (wenn man denn erst einmal herausgefunden hat was du damit erreichen willst...).

Für diesen Beitrag haben gedankt: SRZ_DRESDEN
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 16.10.10 13:18 
Moin!

Zunächst einmal solltest du deinen Quelltext richtig einrücken, da kann selbst ein Profi nicht richtig drin lesen so.
Ich habe das mal gemacht, und Fragen in Kommentare geschrieben:

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:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Wo sind diese Variablen definiert?
  //Wenn global, dann kann das sehr gut der Fehler sein
  i:= 1;  //i ist Schleifenvariable, de DARF nicht global sein, und MUSST du nicht initialisieren. Das sollte dir dein Compiler beides sagen ;)
  AB := strtoint(edit1.text);
  AC := strtoint(edit2.text);
  BA := strtoint(edit3.text);
  BC := strtoint(edit4.text);
  CA := strtoint(edit5.text);
  CB := strtoint(edit6.text);

  Avn :=0;
  Bvn :=0;
  Cvn :=0;

  Azn :=0;
  Bzn :=0;
  Czn :=0;

  for i := 1 to 6 do begin
    A :=  AB + AC;        //3
    B :=  BA + BC;        //7
    C :=  CA + CB;        //11
                                         //Benötige LKW 'S
    Azn :=  A - Avn;      // 3 - 0 =3
    Bzn :=  B - Bvn;      // 7 - 0 =7
    Czn :=  C - Cvn;      // 11 - 0= 11

    Avn := BA + CA ;
    Bvn := AB + CB;
    Cvn := AC + BC;

    label13.Caption := inttostr(Azn);
    label14.Caption := inttostr(Bzn);
    label15.Caption := inttostr(Czn);
  end;
end;


Edit: Du setzt laut @jaenicke wohl voraus, dass einige deiner Variablen ihren Anfangswert behalten. Das ist nicht so, die musst du dann zum Zwischenspeichern in eine neue Variable kopieren.

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
SRZ_DRESDEN Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Sa 16.10.10 14:00 
Danke hab jetzt meinen Fehler gefunden, lag an der schleife :roll:
SRZ_DRESDEN Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Sa 16.10.10 14:04 
kleine frage noch.

hab zum beispiel:
ausblenden Delphi-Quelltext
1:
label14.Caption := inttostr(Bzn);					


ich möchte gerne pro schleife das die label zahl eins höher wird. bsp:

ausblenden Delphi-Quelltext
1:
2:
3:
for i := 1 to 6 do begin 
u:= u + 1;
label1(u).Caption := inttostr(Bzn);


wie macht man das?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 16.10.10 14:19 
Neue Frage, neuer Thread, siehe Richtlinien. ;-)

Schau dir einmal FindComponent an. ;-)