AGB  ·  Datenschutz  ·  Impressum  







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

Viele Objekte ordentlich(!) erstellen

Ein Thema von TheMiller · begonnen am 19. Dez 2009 · letzter Beitrag vom 20. Dez 2009
 
Benutzerbild von TheMiller
TheMiller

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

Viele Objekte ordentlich(!) erstellen

  Alt 19. Dez 2009, 18:51
Hallo,

hab ein etwas kurioses Problem. Ich vermute, es liegt daran, wie ich die Objekte erstelle - es ist noch etwas Neuland für mich.

Also, ich habe mehrere Klassen: Kategorie-Klasse, Artikel-Klasse und eine Kategorien-Klasse (sie enthält alle Kategorien). Jedem Kategorie-Objekt kann man mehrere Artikel-Objekte hinzufügen.

Mein Quelltext sieht demnach so aus:

Delphi-Quellcode:
procedure TForm1.UpdateList;
var
  i,j: Integer;
  Item, Parent: TTreeNode;
  expanded: TIntArray;
  Kategorie: TKategorie;
  Artikel: TArtikel;
begin
  //Root-Kategorie (ID: -1) erstellen
  Kategorie:=TKategorie.Create;
  Kategorie.ID:=-1;
  KomKats.Add(Kategorie); //Typ: TKategorien Mehrzahl(!)
  Kategorie:=nil;
  //...
  while not (Form1.ZQuery1.Eof) do
  begin
    Kategorie:=TmKategorie.Create;
    Kategorie.ID:=Form1.ZQuery1.FieldByName('katid').AsInteger;
    Kategorie.Titel:=Form1.ZQuery1.FieldByName('titel').AsString;
    Kategorie.ChildFrom:=Form1.ZQuery1.FieldByName('parent').AsInteger;
    KomKats.Add(Kategorie);
    Form1.Zquery1.Next;
  end;
  
  //...
  while not (Form1.ZQuery1.Eof) do
  begin
    Artikel:=TArtikel.Create;
    Artikel.ID:=Form1.ZQuery1.FieldByName('ARTIKELID').AsInteger;
    Artikel.Titel:=utf8encode(Form1.ZQuery1.FieldByName('TITEL').AsString);
    Artikel.Kategorie:=Form1.ZQuery1.FieldByName('KID').AsInteger;
    KomKats.Kategorie[KomKats.getIndexById(Artikel.Kategorie)].AddArtikel(Artikel);
    Form1.ZQuery1.Next;
  end;

  //...
  //Kategorie-Objekte durchgehen und diese inkl. dessen Artikel im TreeView anzeigen.
end;
Sodele... Dieser Code hat mal funktioniert, bis ich die in der SQL-Query das "ORDER-BY"-Kriterium geändert habe. Seitdem kamen AVs. Habe ich das ORDER-BY wieder hinzugefügt, hat es wieder funktioniert.
Ich denke, ich mache einen Fehler beim Objekte erstellen und Objekte (nicht-)freigeben. Zumal es bei dieser Lösung so ist, dass jede Kategorie den Titel der ersten Kategorie hat. So denke ich, ich muss das Kategorie-Objekt "löschen" und ein neues erstellen, wenn ein neuer Datensatz geladen wurde (in der while-Schleife).

Bitte gebt mir Tipps und sagt mir, was ich falasch mache!

Vielen Dank
  Mit Zitat antworten Zitat
 


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 10:10 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