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