Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Inhalt eines Memos zusammenrechnen (https://www.delphipraxis.net/124146-inhalt-eines-memos-zusammenrechnen.html)

theroad 15. Nov 2008 14:53


Inhalt eines Memos zusammenrechnen
 
Hallo,

ich habe ein Memo in dem Zahlenwerte stehen (mit kommastellen) diese möchte ich gerne zusammenrechnen.

Ich habe leider keine informationen gefunden wie ich die einzelnen Zeilen addieren kann.

Vielen Dank im voraus

MFG

DeddyH 15. Nov 2008 14:55

Re: Inhalt eines Memos zusammenrechnen
 
Geh die Zeilen in einer Schleife durch (von 0 bis Lines.Count - 1), wandele den String in eine Float um und addiere auf.

theroad 15. Nov 2008 15:54

Re: Inhalt eines Memos zusammenrechnen
 
Habe das jetzt mal so gemacht:
Delphi-Quellcode:
  for i := 0 to memo2.Lines.Count do begin
  i++
  b2:= strtofloat(memo2.Lines.Strings[i]);
  summe2:= summe2 + b2;
  label1.Caption:= floattostr(summe2);
es funktioniert nur leider nicht, die Variabelen habe ich alle als Real deklariert.

Es kommt dieser Fehler:
Zitat:

[DCC Fehler] Unit3.pas(63): E2064 Der linken Seite kann nichts zugewiesen werden
[DCC Fehler] Project2.dpr(7): F2063 Verwendete Unit 'Unit3.pas' kann nicht compiliert werden
Vielen Dank im Voraus
MFG

mkinzler 15. Nov 2008 15:58

Re: Inhalt eines Memos zusammenrechnen
 
Delphi-Quellcode:
for i := 0 to memo2.Lines.Count - 1
Statt
Code:
i++
Delphi-Quellcode:
inc(i);

DeddyH 15. Nov 2008 15:59

Re: Inhalt eines Memos zusammenrechnen
 
Nicht die Sprachen durcheinanderwerfen, i++ ist C-Syntax ;) und eine Änderung der Laufvariablen ist bei For-Schleifen sowieso nicht erlaubt.
Delphi-Quellcode:
for i := 0 to memo2.Lines.Count - 1 do begin //letzte Zeile hat den Index Count - 1
  b2:= strtofloatdef(memo2.Lines[i],0); //sicherheitshalber
  summe2:= summe2 + b2;
end;
label1.Caption:= floattostr(summe2); //nach Abarbeitung der Schleife sollte reichen
[edit] TryStrToFloat und StrToFloatDef durcheinandergeworfen :oops: [/edit]

Fridolin Walther 15. Nov 2008 15:59

Re: Inhalt eines Memos zusammenrechnen
 
Zitat:

Zitat von theroad
Habe das jetzt mal so gemacht:
Delphi-Quellcode:
  for i := 0 to memo2.Lines.Count do begin
  i++
  b2:= strtofloat(memo2.Lines.Strings[i]);
  summe2:= summe2 + b2;
  label1.Caption:= floattostr(summe2);
es funktioniert nur leider nicht, die Variabelen habe ich alle als Real deklariert.

Mal so ne Frage ... was macht das i++ da? Davon abgesehen ist Deine for Schleife nicht korrekt. Arrays, Listen etc. beginnen normalerweise bei 0 an zu zählen und nicht bei 1. Wenn Du also durchläufst, würdest du versuchen irgendwann auf memo2.lines[memo2.lines.count] zuzugreifen. Das wäre aber nicht das letzt Element in der Liste, sondern das Letzte + 1, weil wie gesagt nicht von 1 angefangen wird zu zählen, sondern bei 0.

Abgesehen davon: Welche Zeile in deinem Quelltext entspricht der Zeile 63 aus der Fehlermeldung?

theroad 17. Nov 2008 22:18

Re: Inhalt eines Memos zusammenrechnen
 
Ich bekomme es einfach nicht hin. :oops:
Hier einmal der ganze Quellcode der dahinter steckt. in memo2 sind die zahlen immer so eingetragen: z.b. 16.95
Jedoch bleibt der wert im label immer 0 :(
Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var
zahl,b, i : integer;
  b2: real;
begin
eancode := InputBox('Eancode','Bitte den Eancode einscannen!','');
q := 'Select * From artikel Where ean='+eancode+';';
  FResult := FMysql.query(q, true, ex);
 memo1.Lines.Add(FResult.FieldValue(1)) ;
 memo2.Lines.Add(FResult.FieldValue(2));
 for i := 0 to memo2.Lines.Count - 1 do begin //letzte Zeile hat den Index Count - 1 
  b2:= strtofloatdef(memo2.Lines[i],0); //sicherheitshalber
  summe2:= summe2 + b2;
end;
label1.Caption:= floattostr(summe2); //nach Abarbeitung der Schleife sollte reichen
end;
Vielen Dank im voraus
MFG
TheRoad

soulies 18. Nov 2008 06:09

Re: Inhalt eines Memos zusammenrechnen
 
hoi,

Zitat:

die zahlen immer so eingetragen: z.b. 16.95
ich vermute du erhälst das richtige ergebnis wenn es 16,95 sein würde, also versuch mal

Delphi-Quellcode:
b2:= strtofloatdef(StringReplace(memo2.Lines[i],'.',',',[rfReplaceAll]),0);
um herauszufinden ob es so ist, die werte an sich kannst du ja denn wo anders ändern ...


cya

Teekeks 18. Nov 2008 06:28

Re: Inhalt eines Memos zusammenrechnen
 
Zitat:

Zitat von theroad
Delphi-Quellcode:
q := 'Select * From artikel Where ean='+eancode+';';

Seit wann brauch man bei einer SQL-Anweisung ein ";" am ende? :gruebel: :gruebel:

mkinzler 18. Nov 2008 06:36

Re: Inhalt eines Memos zusammenrechnen
 
Laut Definition gehört eines hin, auch wenn die meissten DBMS ein Fehlen ignorieren


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 Uhr.
Seite 1 von 2  1 2      

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