Thema: Delphi Generics T:=NIL Problem?

Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#1

Generics T:=NIL Problem?

  Alt 19. Nov 2014, 16:08
Hallo Zusammen!

Ich wollte eine TThreadlist erweiter, da ich das herausholen eines Items etwas unhandlich finden.

Schön wäre gewesen:

Delphi-Quellcode:
var
  Que : TThreadList<IFoo>;
  Foo : IFoo;
begin
  Foo := Que.Locklist.First; // Schade
  try
    Foo.Whatever;
  finally
    Que.Unlocklist;
  end;
end;
Leider liefert das eine Exception, wenn die Liste leer ist, da ITEM[0] zugegriffen wird.

Also eine kleine Ableitung

Delphi-Quellcode:
type
    TMyThreadQue<T> = class(TThreadList<T>)
      Public
        Function PopElement(Var LCommand:T):boolean;
    end;

function TMyThreadQue<T>.PopElement(var LCommand: T): boolean;
var
  CList : TList<T>;
begin
  CList := LockList;
  try
    if CList.Count > 0
      then begin
             Result := true;
             LCommand := CList.First;
             CList.Remove(LCommand);
           end
      else begin
             Result := false;
             LCommand := NIL; // Wie geht das hier?
           end;
  finally
    UnlockList;
  end;
end;
Frage: Wie kann ein "T" initialisieren?
Oder habe ich da einen Denkfehler?

Grüsse Mavarik

Geändert von Mavarik (19. Nov 2014 um 16:14 Uhr)
  Mit Zitat antworten Zitat