Delphi-PRAXiS

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

theroad 18. Nov 2008 15:46

Re: Inhalt eines Memos zusammenrechnen
 
Also statt . ein , zu setzen (16,95) zählt er schonmal also ich bekomme in meinem Label einen Wert jedoch ist der flasch sobald ich nocheinen Artikel draufrechne stimmt der wert nicht mehr dann habe ich schon 3 mal 16,95 ausgerechnet obwohl ich nur 2Artikel drinn habe. Er rechnet irgendwie zweimal.
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
  summe:= summe + b2;
end;
label1.Caption:= floattostr(summe); //nach Abarbeitung der Schleife sollte reichen
end;
Vielen Dank im voraus
MFG

Zioone 18. Nov 2008 16:13

Re: Inhalt eines Memos zusammenrechnen
 
bin mir gerade nicht so sicher aber ich würde mal testen deinem i den wert 1 zuzuweisen und nicht bei 0 anzufangen.

DeddyH 18. Nov 2008 16:14

Re: Inhalt eines Memos zusammenrechnen
 
Du setzt "summe" ja auch nicht vorher auf 0. Btw: merkwürdige Einrückung :gruebel:

franktron 18. Nov 2008 16:16

Re: Inhalt eines Memos zusammenrechnen
 
Was willst du eigentlich mit dem Memos erreichen.

Währe das nicht einfacher die Summe direkt aus der DB zu hohlen

DeddyH 18. Nov 2008 16:17

Re: Inhalt eines Memos zusammenrechnen
 
Auf jeden Fall schneller ;)

theroad 18. Nov 2008 16:25

Re: Inhalt eines Memos zusammenrechnen
 
Danke für den Hinweis.
Ich hohle jetzt die werte direkt aus der DB jetzt gehts...

Wenn man sich zu sehr auf eine Sache konzentriert denkt man nicht über andere Möglichkeiten nach :-D

Vielen Dank euch allen!

MFg
TheRoad


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz