Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TStringList-Probleme Objekte vorhanden? (https://www.delphipraxis.net/151650-tstringlist-probleme-objekte-vorhanden.html)

Alter Mann 26. Mai 2010 19:16


TStringList-Probleme Objekte vorhanden?
 
Hallo Leute

Ich habe hier eine 'blöde' StringListe in der ich Objekte zwischenspeichere.
Diese Übergebe ich dann an eine andere mittels Assign:
Delphi-Quellcode:
...
procedure  TCustomFilterListView.SetFilterList(Value : TStringList);
var
  I : Integer;
begin
  FFilterList.Assign(Value);
  for I := 0 to FFilterList.Count - 1 do
    with Groups.Add do
      Header := TSelectedFilter(FFilterList.Objects[I]).Kategorie; // Läuft Fehlerfrei durch

end;
...
procedure  TCustomFilterListView.FilterScan(Value : TFileScanRec);
var
  I : Integer;
  E : String;
  N : String;
  F : String;
  S : Cardinal;
begin
  E := ExtractFileExt(StrPas(Value.lpFileName));
  I := FFilterList.IndexOf(E);
  if ((I <> -1) and FFilterList.OwnsObjects) then
  begin
    N := FFilterList.Strings[I];
    F := TSelectedFilter(FFilterList.Objects[I]).FilterName; // <-- Hier der Fehler, keine Objekte vorhanden
    S := (Value.lpFindFileData.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + Value.lpFindFileData.nFileSizeLow;
    FFoundFiles.AddObject(N, TFoundFile.Create(I, Value.lpFileName, S, F));
  end;
  if Assigned(FOnFilterScan) then FOnFilterScan(Self, StrPas(Value.lpFileName));
end;
...
Frage: Wie kann ich überprüfen ob die Objekte vorhanden sind?

H4ndy 26. Mai 2010 19:20

Re: TStringList-Probleme Objekte vorhanden?
 
Einfach mittels Assigned() pruefen:
Delphi-Quellcode:
if Assigned(FFilterList.Objects[I]) then

Zacherl 26. Mai 2010 19:28

Re: TStringList-Probleme Objekte vorhanden?
 
Assign fürt ja eine Prüfung auf <> nil durch. Zur Sicherheit soltlest du deshalb beim Freigeben der Objekte auch den Pointer in der Liste auf nil setzen, fals du nicht das ganze Element entfernst.


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