AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

100 + 100 + 123,59 = 26???

Ein Thema von TheMiller · begonnen am 14. Sep 2003 · letzter Beitrag vom 14. Sep 2003
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#1

100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 13:55
Hey Leute,

ich bin am Verzweifeln.. Ich habe ein Programm, dass Euro Beträge in ein MemoFeld läd und bei Klick ausrechnet. Man kann jedoch Daten hinzufügen.

Wenn ich jetzt 100€, 100€ und 123,59€ buche, rechnet mir das Prgramm einen Betrag von 26€ zusammen.

Ich habe die Nacht schon mit Christian Seehase gesprochen, da mein Programm die letzte Zahl der Kommastelle zu dem Ergebnis vor dem Komma addiert. Er meinte, auf seinem Rechner geht das Prog einwandtfrei.

Auf meinen beiden allerdings NICHT.

Eins noch, was mich irritiert:
Ich habe 20 Konten angelegt und von Konto 1 - 9 können alle Werte eingegeben werden und es wird richtig ausgerechnet. Allerding von Konto 10 - 20 tritt der oben genannte Fehler auf, (100+100+123,59=26).

Ich habe aber überall den selben Code benutzt. Wie kann das sein?

hier der KOMPLETTE Code für die Rechnungen:

Delphi-Quellcode:
implementation

uses Unit1, Unit3;

{$R *.dfm}

var i: integer; Ergebnis: extended;
var i1: integer; Ergebnis2: extended;
var i2: integer; Ergebnis3: extended;
var i3: integer; Ergebnis4: extended;
var i4: integer; Ergebnis5: extended;
var i5: integer; Ergebnis6: extended;
var i6: integer; Ergebnis7: extended;
var i7: integer; Ergebnis8: extended;
var i8: integer; Ergebnis9: extended;
var i9: integer; Ergebnis10: extended;
var i10: integer; Ergebnis11: extended;
var i11: integer; Ergebnis12: extended;
var i12: integer; Ergebnis13: extended;
var i13: integer; Ergebnis14: extended;
var i14: integer; Ergebnis15: extended;
var i15: integer; Ergebnis16: extended;
var i16: integer; Ergebnis17: extended;
var i17: integer; Ergebnis18: extended;
var i18: integer; Ergebnis19: extended;
var i19: integer; Ergebnis20: extended;

.
.
.

procedure TForm4.Button21Click(Sender: TObject);
begin
  Ergebnis:=0;
  for i:=0 to Memo2.Lines.Count-1 do
  begin
    Ergebnis:=Ergebnis+StrToFloat(Memo2.Lines[i]);
  end;
  Edit41.text:=FloatToStr(Ergebnis);
end;

procedure TForm4.Button22Click(Sender: TObject);
begin
  Ergebnis2:=0;
  for i1:=0 to Memo3.Lines.Count-1 do
  begin
    Ergebnis2:=Ergebnis2+StrToFloat(Memo3.Lines[i1]);
  end;
  Edit42.text:=FloatToStr(Ergebnis2);

end;

procedure TForm4.Button23Click(Sender: TObject);
begin
  Ergebnis3:=0;
  for i2:=0 to Memo5.Lines.Count-1 do
  begin
    Ergebnis3:=Ergebnis3+StrToFloat(Memo5.Lines[i2]);
  end;
  Edit43.text:=FloatToStr(Ergebnis3);

end;

procedure TForm4.Button24Click(Sender: TObject);
begin
  Ergebnis4:=0;
  for i3:=0 to Memo7.Lines.Count-1 do
  begin
    Ergebnis4:=Ergebnis4+StrToFloat(Memo7.Lines[i3]);
  end;
  Edit44.text:=FloatToStr(Ergebnis4);

end;

procedure TForm4.Button25Click(Sender: TObject);
begin
  Ergebnis5:=0;
  for i4:=0 to Memo9.Lines.Count-1 do
  begin
    Ergebnis5:=Ergebnis5+StrToFloat(Memo9.Lines[i4]);
  end;
  Edit45.text:=FloatToStr(Ergebnis5);

end;

procedure TForm4.Button26Click(Sender: TObject);
begin
  Ergebnis6:=0;
  for i5:=0 to Memo11.Lines.Count-1 do
  begin
    Ergebnis6:=Ergebnis6+StrToFloat(Memo11.Lines[i5]);
  end;
  Edit46.text:=FloatToStr(Ergebnis6);

end;

procedure TForm4.Button27Click(Sender: TObject);
begin

  Ergebnis7:=0;
  for i6:=0 to Memo13.Lines.Count-1 do
  begin
    Ergebnis7:=Ergebnis7+StrToFloat(Memo13.Lines[i6]);
  end;
  Edit47.text:=FloatToStr(Ergebnis7);

end;

procedure TForm4.Button28Click(Sender: TObject);
begin

  Ergebnis8:=0;
  for i7:=0 to Memo15.Lines.Count-1 do
  begin
    Ergebnis8:=Ergebnis8+StrToFloat(Memo15.Lines[i7]);
  end;
  Edit48.text:=FloatToStr(Ergebnis8);

end;

procedure TForm4.Button29Click(Sender: TObject);
begin
  Ergebnis9:=0;
  for i8:=0 to Memo17.Lines.Count-1 do
  begin
    Ergebnis9:=Ergebnis9+StrToFloat(Memo17.Lines[i8]);
  end;
  Edit49.text:=FloatToStr(Ergebnis9);

end;

procedure TForm4.Button30Click(Sender: TObject);
begin
    Ergebnis10:=0;
  for i9:=0 to Memo19.Lines.Count-1 do
  begin
    Ergebnis10:=Ergebnis10+StrToFloat(Memo19.Lines[i9]);
  end;
  Edit50.text:=FloatToStr(Ergebnis10);

end;

procedure TForm4.Button31Click(Sender: TObject);
begin
    Ergebnis11:=0;
  for i10:=0 to Memo21.Lines.Count-1 do
  begin
    Ergebnis11:=Ergebnis11+StrToFloat(Memo21.Lines[i10]);
  end;
  Edit51.text:=FloatToStr(Ergebnis11);

end;

procedure TForm4.Button32Click(Sender: TObject);
begin
    Ergebnis12:=0;
  for i11:=0 to Memo23.Lines.Count-1 do
  begin
    Ergebnis12:=Ergebnis12+StrToFloat(Memo23.Lines[i11]);
  end;
  Edit52.text:=FloatToStr(Ergebnis12);

end;

procedure TForm4.Button33Click(Sender: TObject);
begin
    Ergebnis13:=0;
  for i12:=0 to Memo25.Lines.Count-1 do
  begin
    Ergebnis13:=Ergebnis13+StrToFloat(Memo25.Lines[i12]);
  end;
  Edit53.text:=FloatToStr(Ergebnis13);

end;

procedure TForm4.Button34Click(Sender: TObject);
begin
    Ergebnis14:=0;
  for i13:=0 to Memo27.Lines.Count-1 do
  begin
    Ergebnis14:=Ergebnis14+StrToFloat(Memo27.Lines[i13]);
  end;
  Edit54.text:=FloatToStr(Ergebnis14);

end;

procedure TForm4.Button35Click(Sender: TObject);
begin
    Ergebnis15:=0;
  for i14:=0 to Memo29.Lines.Count-1 do
  begin
    Ergebnis15:=Ergebnis15+StrToFloat(Memo29.Lines[i14]);
  end;
  Edit55.text:=FloatToStr(Ergebnis15);

end;

procedure TForm4.Button36Click(Sender: TObject);
begin
    Ergebnis16:=0;
  for i15:=0 to Memo31.Lines.Count-1 do
  begin
    Ergebnis16:=Ergebnis16+StrToFloat(Memo31.Lines[i15]);
  end;
  Edit56.text:=FloatToStr(Ergebnis16);

end;

procedure TForm4.Button37Click(Sender: TObject);
begin
    Ergebnis17:=0;
  for i16:=0 to Memo33.Lines.Count-1 do
  begin
    Ergebnis17:=Ergebnis17+StrToFloat(Memo33.Lines[i16]);
  end;
  Edit57.text:=FloatToStr(Ergebnis17);

end;

procedure TForm4.Button38Click(Sender: TObject);
begin
    Ergebnis18:=0;
  for i17:=0 to Memo35.Lines.Count-1 do
  begin
    Ergebnis18:=Ergebnis18+StrToFloat(Memo35.Lines[i17]);
  end;
  Edit58.text:=FloatToStr(Ergebnis18);

end;

procedure TForm4.Button39Click(Sender: TObject);
begin
      Ergebnis19:=0;
  for i18:=0 to Memo37.Lines.Count-1 do
  begin
    Ergebnis19:=Ergebnis19+StrToFloat(Memo37.Lines[i18]);
  end;
  Edit59.text:=FloatToStr(Ergebnis19);

end;

procedure TForm4.Button40Click(Sender: TObject);
begin
      Ergebnis20:=0;
  for i18:=0 to Memo39.Lines.Count-1 do
  begin
    Ergebnis20:=Ergebnis20+StrToFloat(Memo39.Lines[i18]);
  end;
  Edit59.text:=FloatToStr(Ergebnis20);

end;

end.
Bitte helft mir...
  Mit Zitat antworten Zitat
Dagon

Registriert seit: 13. Jul 2003
505 Beiträge
 
Delphi 7 Professional
 
#2

Re: 100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 14:12
Ich muss dich leider enttäuschen! Bei mir funktionierts auch! Vieleicht liegt es an der aktuellen Kommaeinstellnug des Betriebssystems (also ob , oder .)? Ich weiss sonst auch nichts.
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#3

Re: 100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 14:14
Hm,
also ich habe winXP Prof und wenn in 100.98 eingebe, dann sagt er "100.98 ist keine gültige Gleitkommazahl" (Delphi 6 enterprise)

Es geht nur mit ","

Was mach ich jetzt?

Wenn's bei euch geht?? Ist der Code dann auch richtig?
  Mit Zitat antworten Zitat
Dagon

Registriert seit: 13. Jul 2003
505 Beiträge
 
Delphi 7 Professional
 
#4

Re: 100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 14:21
Ich habe herausgefunden, dass es an der Kommaeinstellung nicht liegen kann (bei mir geht es mit , und .).
Der Code sollte eigentlich stimmen.
Das ist wirklich ein merkwürdiges Problem! Ich werde noch weiter suchen und wenn ich etwas gefunden haben, schreibe ichs dir!
  Mit Zitat antworten Zitat
Illuminator-23-5
(Gast)

n/a Beiträge
 
#5

Re: 100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 14:23
bei mir klappts auch einwandfrei, der code dürfte also schon stimmen, aber kleiner tipp:
du könntest dir um die ganten i1, i2, i3... Variablen-deklarationen zu sparen, eine lokale laufvariable in jeder prozedur zu definieren. Falls das nicht geht, kannst du schreiben: var i: array[0..19] of integer; dann wär das ganze auch ein bisschen übersichtlicher...
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#6

Re: 100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 14:28
Danke, aber Sorry, dmit kenne ich mich nicht so aus.

Hier mein Programm. Geht bitte im hauptmenü auf Kontoauszüge einsehen und bucht mal in ID01 und ID10

Überzeugt euch bitte selbst... (ich dreh gleich am Rad)
Angehängte Dateien
Dateityp: rar neuer_ordner.rar (461,4 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#7

Re: 100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 14:47
Hmm.. bei 01 rechnet er richtig, bei 10 kommt bei 78 + 2 = 17
Irgendwas stimmt da nicht! Wahrscheinlich hast du beim Kopieren eine Zahl nicht geändert... z.B. Listbox9 anstatt Listbox10...
So hab ich früher auch mal programmiert, da ist mir das auch passiert!
Ganz merkwürdige Fehler hatte ich da auch! Ich würde mich bei einem solchen Programm auf jeden Fall mit Arrays oder oder Klassen beschäftigen, das lohnt sich immer bei mehreren Sachen (zB Konten) und solche Fehler sind so gut wie ausgeschlossen.

Ach und nochwas: Wenn ich einen Kommabetrag eingebe stimmt gar nichts mehr! Egal bei welcher Nummer!
44.20 + 0.10 = 11
  Mit Zitat antworten Zitat
Dagon

Registriert seit: 13. Jul 2003
505 Beiträge
 
Delphi 7 Professional
 
#8

Re: 100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 14:51
Ich würde auch noch einmal den ganzen Code durchschauen, ob du nicht etwa zwei Memos vertauscht hast. denn das scheint der Fall zu sein!
  Mit Zitat antworten Zitat
Benutzerbild von TheMiller
TheMiller

Registriert seit: 19. Mai 2003
Ort: Gründau
2.480 Beiträge
 
Delphi XE7 Architect
 
#9

Re: 100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 14:51
Hi, könntest du den Code evtl. umschreiben? IChhabe mit Arryes keine Erfahrung... würde es auch als THX vermerken..

Wäre cool, wenn du das machen würdest. (musst aber nicht )

Aber falls doch Interesse besteht, schicke ich dir den Code...
  Mit Zitat antworten Zitat
axelf98

Registriert seit: 27. Aug 2003
Ort: Ennepetal
440 Beiträge
 
Delphi 2005 Personal
 
#10

Re: 100 + 100 + 123,59 = 26???

  Alt 14. Sep 2003, 15:00
Schau dir mal den Code an, dann siehst du vielleicht, warum das nicht geht: Wenn im Memo1 steht "14.09.2003 12,22?" und du mit StrToFloat das in eine Zahl umwandelst.. Das kann nicht gehen, da dort mehr als eine Zahl vorkommt, und woher sollte der Compiler wissen welche?
Stattdessen nimmt der wohl dann alle. Du müsstest die Zahlen separat speichern, und dann (am Besten als Array) direkt zusammenrechnen.

-----------------


Und noch was:
Zählvariablen sollten immer nur in der Prozedur (lokal und nicht oben global deklariert werden!) Du hast ja i0 bis iXX, das brauchst du gar nicht:

Delphi-Quellcode:
procedure Button1Click;
var i : integer;
begin
for i := 0 to Memo3.Lines.Count-1 do ...
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz