Einzelnen Beitrag anzeigen

DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#1

tlist. get "überschreiben", Fehlermeldung verhindern

  Alt 23. Jul 2012, 21:33
Hi,
da mich die Fehlermeldung "Listenindex überschreitet das Maximum" nervt,
möchte ich in einer abgeleiteten tmylist.get "überschreiben"

overwrite nicht mgl., da statisch

Mein Ansatz:

Delphi-Quellcode:
// original
function TList.Get(Index: Integer): Pointer;
begin
  if Cardinal(Index) >= Cardinal(FCount) then
    Error(@SListIndexError, Index);
  Result := FList^[Index];
end;

TMyList_UA = class(TList)
  private

  protected

  public
    function Get(Index: Integer): Pointer;
  published
  end;

function TMyList_UA.Get(Index: Integer): Pointer;
begin
if cardinal(index) in [0 .. count-1] then
    Result := List^[Index] else result:=nil;
end;

//ODER

function TMyList_UA.Get(Index: Integer): Pointer;
begin
  if (cardinal(index)>-1) and (Cardinal(Index) < Cardinal(Count)) then
    Result := List^[Index] else result:=nil;
end;
Beide Funktions-Modelle funktionieren - welches ist besser?
Im tlist.get-Original werden die Indexe <0 nicht geprüft -gibt's da
keinen Fehler?

MfG
Uwe

Geändert von DrUArn (24. Jul 2012 um 09:43 Uhr)
  Mit Zitat antworten Zitat