Entwickler-Ecke

Sonstiges (Delphi) - Berechnung scheint so nicht zu funktionieren


Darkscream - So 04.09.05 16:24
Titel: Berechnung scheint so nicht zu funktionieren

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:
dmgA := 0 ;
dmgD := 0 ;
defA := 0 ;
defD := 0 ;
For  i := 1 to 2 do
 begin
  For j := 1 to 13 do
   begin
    Anzahl_U[i][j] := strtoint(edits[i][j].Text) ;
   end;
 end;

For J := 1 to 13 do
 begin
  dmgA :=  Anzahl_U[1][j] *  (Units[j][1] + Random(Units[j][3]) ) + dmgA ;
  defA :=  Anzahl_U[1][j] *  (Units[j][2] + Random(Units[j][3]) ) + defA ;
  dmgD :=  Anzahl_U[2][j] *  (Units[j][1] + Random(Units[j][3]) ) + dmgD ;
  defD :=  Anzahl_U[2][j] *  (Units[j][2] + Random(Units[j][3]) ) + defD ;
 end;
 messagedlg(inttostr(dmga)+ ' ' + inttostr(defA) + ' ' + inttostr(dmgD) + ' ' + inttostr(defD),mtinformation,[mbOK],0);
ndefD := defD - DmgA ;
ndefA := defA - DmgD ;
 messagedlg(inttostr(ndefA)+ ' ' +inttostr(ndefA),mtinformation,[mbOk],0);

if (defD <> 0and (defA <> 0then
 begin
  abzfD := ndefD / defD * 100;
  abzfA := ndefA / defA * 100;
  messagedlg(floattostr(abzfA)+ ' ' +floattostr(abzfD),mtinformation,[mbOk],0);
 end
else
 begin
  exit;
 end;
For j := 1 to 13 do ;
 begin
  nAnzahl_U[1][j] := Anzahl_U[1][j] * abzfA / 100 ;
  nAnzahl_U[2][j] := Anzahl_U[2][j] * abzfD / 100 ;
 end;
for j := 1 to 13 do
 messagedlg(floattostr(nAnzahl_U[1][j]) + ' ' + floattostr(nAnzahl_U[2][j]),mtinformation,[mbOK],0);


Also ich hab folgendes problem wenn ich das so mache wie es da oben steht dann bekomme ich immer 0 raus oO aber wieso ?
bei der ersten messagedlg stehen noch werte drin so wie sie sollen bei der 2ten und bei der 3ten ebenfalls nur bei der letzten kommt immer null raus oO

MfG,
Darkscream


GTA-Place - So 04.09.05 16:27

Hinweis: Arrays fangen mit 0 an, also nicht J := 1 to 13;, sondern J := 0 to 12;.
Aber das nur nebenbei. Sollte nix am Problem ändern.


adfontes - So 04.09.05 16:55

user profile iconGTA-Place hat folgendes geschrieben:
Hinweis: Arrays fangen mit 0 an, also nicht J := 1 to 13;, sondern J := 0 to 12;.
Aber das nur nebenbei. Sollte nix am Problem ändern.


eigentlich könnte das problem ja doch daher kommen, da user profile iconDarkscream ja meinte, es würde beim letzten immer 0 raus kommen, das letzte wäre in seinem fall das 13. element des arrays, das ja nich exsitiert, also kann ja auch nix gescheites rauskommen ... oder seh ich da wieder grad was total falsch oO


Darkscream - So 04.09.05 17:16

mal abgesehen davon das ich die Arrays mit 1..13 initialisiert habe und damit fängt es ja eigentlich bei 1 an und nich bei 0 ^^

Zitat:
eigentlich könnte das problem ja doch daher kommen, da Darkscream ja meinte, es würde beim letzten immer 0 raus kommen, das letzte wäre in seinem fall das 13. element des arrays, das ja nich exsitiert,


das letzte bezog sich auf die letzte messagedlg die ich ja alle zum überprüfen eingebaut habe ^^ und bei der letzten kommt halt immer 0 raus ^^