Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi AV bei angepasster TObjectList (https://www.delphipraxis.net/147806-av-bei-angepasster-tobjectlist.html)

ryLIX 16. Feb 2010 19:41


AV bei angepasster TObjectList
 
Hi ihr,
da sich das ganze nun häuft mach ich hier nun nen Sammelthread draus -.-
Nachdem das letzte Problem an meiner angepassten TObjectList behoben war tat sich gleich das nächste auf.
Und nach 2 Stunden debugging und verständnislosen auf den Bildschirm starren hier nun mein Hilferuf :D

Code der eigenen Funktion in der TObjectList:
Delphi-Quellcode:
procedure TNonFoodList.Suchen(locNonFoodList: TNonFoodList; KeyWord: string);
var
  I: Integer;
begin
  for I := 0 to Self.Count - 1 do
    begin
      if ContainsText(TArtikel(Self.Items[I]).Artikelname, KeyWord) then
        begin
          locNonFoodList.Add(TArtikel(Self.Items[I]));
          Continue
        end
      Else if ContainsText(FloatToStr(TArtikel(Self.Items[I]).Menge), KeyWord) then
        begin
          locNonFoodList.Add(TArtikel(Self.Items[I]));
          Continue
        end
      Else if ContainsText(FloatToStr(TArtikel(Self.Items[I]).Preis), KeyWord) then
        begin
          locNonFoodList.Add(TArtikel(Self.Items[I]));
          Continue
        end
      Else if ContainsText(FloatToStr(TArtikel(Self.Items[I]).Kosten), KeyWord) then
        begin
          locNonFoodList.Add(TArtikel(Self.Items[I]));
        end;
    end;
end;
Hier der Aufruf:
Delphi-Quellcode:
locNonFoodList.Create;
      locNonFoodList.OwnsObjects:=false;
      NonFoodList.Suchen(locNonFoodList, s);
      for X := 0 to locNonFoodList.Count - 1 do
      begin
        NonFoodList.Remove(locNonFoodList.Items[X]);
      end;
      locNonFoodList.Clear;
      locNonFoodList.Free;
Über die Verwendung lässt sich streiten. Aber es erfüllt den Zweck. Ich überleg mir hier eventuell noch den Index des Objects in der Tag eigentschaft oder so zu hinterlegen um auf den Aufruf von Suchen zu verzichten.
Ist aber nicht das Problem, wollt das nur vorweg nehmen bevor einer meckert, mein Problem liegt da wenn ein Artikel gefunden wird und dieser der Liste hinzugefügt werden soll gibts ne AV.
Message:
Zitat:

Im Projekt myProject.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 00426734 in Modul 'myProject.exe'. Schreiben von Adresse 09875D50' aufgetreten.
Was mir nun sagt das die Procedure nicht in die übergebene Liste schreiben kann.
Aber warum verstehe ich nicht :?

daywalker9 16. Feb 2010 19:51

Re: Drama mit angepasster TObjectList
 
Ist doch klar :P

Du machst:

Delphi-Quellcode:
  locNonFoodList.Create;
Muss doch


Delphi-Quellcode:
  locNonFoodList := TNonFoodList.Create;
sein.

Luckie 16. Feb 2010 19:53

Aussagekräftiger Titel
 
Bitte gib deinem Beitrag einen aussagekräftigen Titel. Der jetzige Titel lässt nicht erkennen, um was für ein Problem oder Frage es sich handelt. Um den Titel zu ändern, editiere einfach deinen ersten Beitrag. Damit erleichterst du das Auffinden deines Beitrages mit der Suche und ersparst anderen Mitglieder ein unnötiges Öffnen deines Beitrages.

ryLIX 16. Feb 2010 19:57

Re: Mehrere Probleme mit angepasster TObjectList
 
@daywalker9
-.- Ich geh ins Bett heute ist nicht mein Tag :(
Hab mir heut schon beim Renovieren 3x in die Finger geschnitten und so gehts dann weiter...

@Luckie
Done. Ausreichend?

Luckie 16. Feb 2010 20:00

Re: Mehrere Probleme mit angepasster TObjectList
 
Und du meinst der Titel sagt jetzt mehr über deine Probleme mit der Objektliste aus? ;)

ryLIX 16. Feb 2010 20:12

Re: Mehrere Probleme mit angepasster TObjectList
 
Zitat:

Zitat von Luckie
Und du meinst der Titel sagt jetzt mehr über deine Probleme mit der Objektliste aus? ;)

Hmm dann schreib ich nun noch mal um ;)

hoika 16. Feb 2010 20:32

Re: AV bei angepasster TObjectList
 
Hallo,

was mir hier mißfällt

Delphi-Quellcode:
for I := 0 to Self.Count - 1 do
    begin
      if ContainsText(TArtikel(Self.Items[I]).Artikelname, KeyWord) then
        begin
          locNonFoodList.Add(TArtikel(Self.Items[I]));
          Continue
        end
      Else if ContainsText(FloatToStr(TArtikel(Self.Items[I]).Menge),
Warum steht ihr mehrfach

TArtikel(Self.Items[I]).XXX

Wie willst du das mal Debuggen.

Delphi-Quellcode:
var
  Artikel: TArtikel;

for I := 0 to Self.Count - 1 do
    begin
      Artikel:= TArtikel(Self.Items[I]);

      if ContainsText(Artikel.Artikelname, KeyWord) then
        begin
          locNonFoodList.Add(Artikel);
          Continue
        end
      Else if ContainsText(FloatToStr(Artikel.Menge),
Und schon kannst du das besser pr Watch-Point beobachten.


Heiko

ryLIX 16. Feb 2010 20:39

Re: AV bei angepasster TObjectList
 
Mir missfällt das ganze "gecaste" sowieso irgendwie.
Da ich ein Delphi2009 hier hab überlege ich grad ob ich das ganze auf TObjectList<T> umstelle.
Da die Listen(sind mehrere verschiedene die als Container dienen) eh immer nur die gleiche Klasse beinhalten.

mkinzler 16. Feb 2010 20:41

Re: AV bei angepasster TObjectList
 
Das wäre eine gute Überlegung

ryLIX 16. Feb 2010 21:10

Re: AV bei angepasster TObjectList
 
Zitat:

Zitat von mkinzler
Das wäre eine gute Überlegung

Kurze Frage noch :)
Muss doch dann von TObjectList<T> erben oder weiter von TObjectList?
Also so:
Delphi-Quellcode:
TNonFoodList<T> = class(TObjectList<T>)
Oder muss ich da schon die Klasse aufrufen? :gruebel:


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