bonjour j'ai un souci dont je n'arrive pas a me defaire. J'ai créé une proocédure pour enlever tous les doublons d'un tableau :
	
	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
   |  
procedure TArray.Unique();
var
  TempTab : Array of Variant;
  TempCurrentPos : integer;
  Pos, Count : integer;
  Ajout : Boolean;
begin
  if(CurrentLength>1) then
  begin
    SetLength(TempTab, CurrentLength);
    TempCurrentPos := 0;
    for Pos := 0 to CurrentLength - 1 do
    begin
      Ajout := true;
      for Count := 0 to TempCurrentPos - 1 do
      begin
        ShowMessage(ShowBasicVariantType(TempTab[Count]) + ' - ' + ShowBasicVariantType(Tableau[Pos]));
        if TempTab[Count] = Tableau[Pos] then Ajout := false;
      end;
      if (Ajout) then
      begin
        TempTab[TempCurrentPos] := Tableau[Pos];
        inc(TempCurrentPos);
      end;
    end;
    DelAllElement();
    for Count := 0 to TempCurrentPos - 1 do
      AddElement(TempTab[Count]);
  end ;
end; | 
 mais je me retrouve avec une erreur d'exception me disant violation d'acces.
les deux elements de comparaison son tous deux de type varDispatch.
Une petite idée ?
CurrentLength est la longueur du tableau fournie lors de l'instanciation de mon composant TArray.
	
	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   |  
TArray = class(TObject)
    constructor Create;
    procedure   SetIncrement(Increment : Integer);
    function    AddElement(Element : Variant) : Boolean; overload;
    function    AddElement(Element : Variant; Index : Integer) : Boolean; overload;
    function    DelElement(Index : Integer) : Boolean;
    function    DelAllElement() : Boolean;
    function    GetElement(Index : Integer) : Variant;
    function    Length() : Integer;
    procedure   Unique();
    function   ShowBasicVariantType(varVar: Variant) : string;
  private
    Tableau : Array of Variant;
    CurrentLength : Integer;
    MaxLength : Integer;
    CurrentIncrement : Integer;
 
  public
 
  end; | 
 donc si vous avez une idée...
ca plante sur : 
	
	if TempTab[Count] = Tableau[Pos] then Ajout := false;
 
						
					
Partager