Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objekte in eigener TObjectList verlieren ihre Werte (https://www.delphipraxis.net/147753-objekte-eigener-tobjectlist-verlieren-ihre-werte.html)

ryLIX 15. Feb 2010 17:03


Objekte in eigener TObjectList verlieren ihre Werte
 
Hi ihr,
ich habe eine angepasste TObjectList in der ich eigene Datenklassen speichere.

Aber wenn ich nun eine neue Datenklasse erstelle, diese mit Daten befülle und dann in der Liste ablege sind beim nächsten Aufruf der Klasse aus der Liste die Werte ganze weg oder vollkommen unbrauchbar. :shock:
Die Add Prozedur habe ich aber nicht verändert in der Liste.

Ich arbeite derzeit mit Delphi2009.

Kennt jemand eine Lösung hier?

mkinzler 15. Feb 2010 17:38

Re: Objekte in eigener TObjectList verlieren ihre Werte
 
Ohne deinen Code zu kennen: Nein.

ryLIX 15. Feb 2010 18:01

Re: Objekte in eigener TObjectList verlieren ihre Werte
 
Datenklasse befüllen:
Delphi-Quellcode:
try
  locNonFood := TArtikel.Create;
except on E: Exception do
  begin
   ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
   Exit;
  end;
end;
with locNonFood do
  begin
    Artikelname:=AddArtikelDLG.txtArtikelname.Text;
    Menge:= Integer(AddArtikelDLG.txtAmount.Text);
    Preis:= Integer(AddArtikelDLG.txtPrice.Text);
  end;
if Assigned(Artikel) then Artikel.Add(locNonFood);
  locNonFood.Free;
end;
Aufruf aus der TObjectlist
Delphi-Quellcode:
  if Artikel.Count > -1 then
    begin
      for B := 0 to Artikel.Count - 1 do
      begin
        locNonFood := TArtikel(Artikel.Items[B]);
        LocItem := AListView.Items.Add;
        locItem.Caption := locNonFood.Artikelname;
        locItem.ImageIndex := -1;
        with locItem.SubItems do
        begin
          Add(IntToStr(locNonFood.Menge));
          Add(IntToStr(locNonFood.Preis));
          Add(IntToStr(locNonFood.Kosten));
        end;
      end;
    end;
Beispiel:
Eingabe bei Artikelname: 'Test'
Ergebnis beim Aufruf: ''
Eingabe bei Menge: '2'
Ergebnis beim Aufruf: '0'
Eingabe bei Preis: '1,99'
Ergebnis beim Aufruf: '0'
:wiejetzt:

mkinzler 15. Feb 2010 18:07

Re: Objekte in eigener TObjectList verlieren ihre Werte
 
Dise Zeile muss weg:
Delphi-Quellcode:
locNonFood.Free;

hoika 15. Feb 2010 18:11

Re: Objekte in eigener TObjectList verlieren ihre Werte
 
Hallo,

ausserdem würde ich eine Liste auch ArtikelList
und nicht Artikel nennen.


Heiko

ryLIX 15. Feb 2010 18:15

Re: Objekte in eigener TObjectList verlieren ihre Werte
 
Zitat:

Zitat von mkinzler
Dise Zeile muss weg:
Delphi-Quellcode:
locNonFood.Free;

Arrg jetzt kommts :wall: :wall:
Ich hab bestimmt ewig gelesen um das mit der TObjectList zu verstehen.
Und nu wo du es sagst fällts mir auch auf das ja die Liste das freigeben der Objekte übernimmt :wall:


Zitat:

Zitat von hoika
Hallo,

ausserdem würde ich eine Liste auch ArtikelList
und nicht Artikel nennen.


Heiko

Danke für den Hinweis.
Aber die Namen sind derzeit nicht wichtig.
Die Anwendung dient im Moment nur zum Testen der Datenklasse und der Containerklasse. :stupid:

mkinzler 15. Feb 2010 18:22

Re: Objekte in eigener TObjectList verlieren ihre Werte
 
Zitat:

Und nu wo du es sagst fällts mir auch auf das ja die Liste das freigeben der Objekte übernimmt ouch!
Selbst, wenn sie das nicht machen würde, ist es an dieser Stelle schlecht

Namenloser 15. Feb 2010 19:14

Re: Objekte in eigener TObjectList verlieren ihre Werte
 
Delphi-Quellcode:
with locNonFood do
  begin
    Artikelname:=AddArtikelDLG.txtArtikelname.Text;
    Menge:= Integer(AddArtikelDLG.txtAmount.Text);
    Preis:= Integer(AddArtikelDLG.txtPrice.Text);
  end;
Typecast auf Integer? Bist du sicher? Du suchst denke ich eher StrToInt.

ryLIX 15. Feb 2010 19:54

Re: Objekte in eigener TObjectList verlieren ihre Werte
 
Zitat:

Zitat von NamenLozer
Delphi-Quellcode:
with locNonFood do
  begin
    Artikelname:=AddArtikelDLG.txtArtikelname.Text;
    Menge:= Integer(AddArtikelDLG.txtAmount.Text);
    Preis:= Integer(AddArtikelDLG.txtPrice.Text);
  end;
Typecast auf Integer? Bist du sicher? Du suchst denke ich eher StrToInt.

Ist mir vorhin auch schon aufgefallen... Ab und zu schreib ich schneller als ich denke :stupid:

Panthrax 15. Feb 2010 20:27

Re: Objekte in eigener TObjectList verlieren ihre Werte
 
Zitat:

Zitat von ryLIX
Aber die Namen sind derzeit nicht wichtig.

Bezeichner sind immer wichtig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 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