AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Items eines List Objektes addieren

Ein Thema von Nugi89 · begonnen am 20. Jul 2015 · letzter Beitrag vom 21. Jul 2015
Antwort Antwort
Seite 1 von 2  1 2      
Nugi89

Registriert seit: 27. Jan 2015
21 Beiträge
 
#1

Items eines List Objektes addieren

  Alt 20. Jul 2015, 15:06
Hallo,
habe folgendes Problem:
- ich habe mir ein Programm erstellt in dem ich einige werte in ein Memofeld übergebe. mein problem liegt darin das ich bestimmte werte nicht addieren kann bzw es wird mir ein relativ großer wert ausgegeben. ich habe mir die werte in einer Liste abgespeichert. nur das addieren funzt nicht so wie es sollte.
Hier mal der Quelltext:

Code:
TItem = class(TObject)
  public
    next: TItem;
    wert: real;
  end;

  TListe = class(TObject)
  private
    first: TItem;
    last: TItem;
  public
    gesamt: real;
    procedure add(wert: real);
    function addieren(gesamt: real):real;
    function count(): integer;
  end;

implementation

{ TListe }

procedure TListe.add(wert: real);   //Item hinzufügen
var Item: TItem;
begin
  Item:= TItem.Create;
  Item.wert:= wert;

  if first = Nil then
  begin
    first:= Item;
    last:= Item;
  end
  else
  begin
    last.next:= Item;
    last:= Item;
  end;
end;

function TListe.addieren(gesamt: real):real; //Items addieren
var
  i: integer;
  Item: TItem;
begin

  gesamt:= 0;
  i:= count;
 
  for i := 0 to count - 1 do
  begin
    gesamt:= gesamt + Item.wert; <--(Item.wert) hier wird mir dieser riesige wert übergeben
  end;

  Result:= gesamt;

 end;

function TListe.count: integer; //Zählen der Items
var
  i: integer;
  Item: TItem;
begin
  i:= 1;
  Item:= first;

  if first = Nil then
  begin
    i:= 0;
  end
  else
  begin
    while Item.next <> Nil do
    begin
      i:= i+1;
      Item:= Item.next;
    end
  end;

  result:= i;

end;

end.

ich hoffe es kann mir jemand helfen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Items eines List Objektes addieren

  Alt 20. Jul 2015, 15:15
Bei Count iterierst Du durch die Einträge. Beim eigentlichen Summieren nimmst Du immer den gleichen Wert.
Markus Kinzler
  Mit Zitat antworten Zitat
Bambini
(Gast)

n/a Beiträge
 
#3

AW: Items eines List Objektes addieren

  Alt 20. Jul 2015, 15:20
Delphi-Quellcode:
  
  for i := 0 to count - 1 do
  begin
    gesamt:= gesamt + Item.wert; <--(Item.wert) hier wird mir dieser riesige wert übergeben
  end;
Das Item Objekt ist auch nicht zugewiesen. Sollte eigentlich eine Schutzverletzung geben.
Vielleicht sollte es noch eine Funktion geben die mit TListe.Item(AIndex : Integer) : TItem;
auch das angesprochene Item zurück gibt.

Auch werden die erzeugten TItems nie freigegeben.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Items eines List Objektes addieren

  Alt 20. Jul 2015, 15:53
Das sieht eh komisch aus, wozu ein Parameter und ein Funktionsergebnis, die am Ende dasselbe enthalten sollen? Aus dem Kopf würde ich das etwa so machen:
Delphi-Quellcode:
function TListe.addieren: real;
var
  Item: TItem;
begin
  Result := 0;
  Item := First;
  while Assigned(Item) do
    begin
      Result := Result + Item.wert;
      Item := Item.Next;
    end;
 end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#5

AW: Items eines List Objektes addieren

  Alt 20. Jul 2015, 16:12
Hallo...
Zitat:
TListe = class(TObject)
...ähmm. TListe ist keine Liste.
Delphi-Quellcode:
for i := 0 to count - 1 do
  begin
    gesamt:= gesamt + Item.wert; <--(Item.wert) hier wird mir dieser riesige wert übergeben
  end;
Eigentlich kann das gar nicht compilieren weil TObject kein Count hat und mit Item statt First bzw. der Zuweisung derselben wie in #4 gearbeitet wird.

Schreibfehler?

PS: Warum wird mit TItem gearbeitet und nicht direkt mit den Werten?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Items eines List Objektes addieren

  Alt 20. Jul 2015, 16:14
Zitat:
Eigentlich kann das gar nicht compilieren weil TObject kein Count hat
Er implementiert diese Funktion aber für seinen Klasse
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#7

AW: Items eines List Objektes addieren

  Alt 20. Jul 2015, 16:17
wo implementiert er count? Count bezieht sich in diesem Falle auf TListe. Das ist aber keine Liste.
Delphi-Quellcode:
function TListe.addieren(gesamt: real):real; //Items addieren
var
  i: integer;
  Item: TItem;
begin

  gesamt:= 0;
  i:= count;
 
  for i := 0 to count - 1 do
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Items eines List Objektes addieren

  Alt 20. Jul 2015, 16:18
Außerdem ist das eine einfach verkettete Liste, also doch Liste, nur eben nicht von TList o.ä. abgeleitet und nicht (ohne selbst zu implementierende Verrenkungen) indiziert ansprechbar.

[edit] Und hier ist der Count:
Zitat:
function TListe.count: integer;
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#9

AW: Items eines List Objektes addieren

  Alt 20. Jul 2015, 16:20
@DeddyH:
hab ich was an den Augen?
TListe = class(TObject) Nachtrag: Ich nehme alles zurück. Ich geh dann mal aus der Sonne.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Items eines List Objektes addieren

  Alt 20. Jul 2015, 16:21
@DeddyH:
hab ich was an den Augen?
TListe = class(TObject)
Ja, schau den ersten Beitrag an

Wenn du es nicht findest, dann STRG-F im Browser und suche alle Stellen mit "TListe.count"
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:28 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