la ligne ne vérifie que la premiere condition.Il faut l'insérer dans la boucle.
La condition de bouclage est à revoir aussi:
while ( i<a2.Count ) and (CompareDate( ATDATA(a2.Items[i]^).heure, ATDATA(a1.Items[0]^).heure ) < 0 ) do Inc(i);
si
Odd(CompareDate( ATDATA(a2.Items[i]^).heure, ATDATA(a1.Items[0]^).heure )
retourne systematiquement false tu boucleras jusqu'au débordement de pile.
Sinon le reste du code est correct.
Tu peux utiliser la méthode Pack pour supprimer les références nil dans les listes.
Par ailleurs, le prototype de fonction est un peu bête puisque tu retournes a2.
Remplaces:
function Fill( a1: TVector; a2: TVector ): TVector;
par
procedure Fill(a1, a2: TVector);
Partager