Buongiorno a tutti.
Ho una lista di oggetti (Way Points con relative coordinate) salvata in una TFPObjectList che devo analizzare per valutare se tra un WP e l'altro è presente una distanza minore di m metri.
L'idea è quella di prendere il primo e confrontarlo con tutti i successivi.. il secondo e confrontarlo con tutti i successivi e cosi via...
for i:=0 to Count-2 do // dal primo punto in avanti
for k:=i+1 to Count-1 do // dal punto successivo al precedente, in avanti
begin
// confrono della distanza trà il punto i ed il punto k
// azioni da prendere
end;
Se la lista rimane integra il sistema funziona. Ma se l'azione da intraprendere è un ovvero elimino fisicamente l'oggetto k allora il problema che sorge è che i riferimenti Count-2 e Count-1 non sono più validi.
Questo codice non funzionerebbe! :-\
Esiste un metodo per fare la scansione della lista senza perdere i riferimenti sul fine lista anche cancellando elementi durante la scansione?
Spero di aver chiarito il problema.
Grazie per l'aiuto.
Andrea.
Ciao,
non ho mai usato quell'oggetto, ma di solito quando devi scorrere un elenco, e sai già in partenza che probabilmente andrai a cancellare almcno un elemento, allora lo devi leggere al contrario, usando "downto" invece di to.
Ecco un esempio:
//Cancello dall'elenco tutti i files con dimensione = 0
for Idx:=ListaFiles.Count - 1 downto 0 do begin
NomeFile:=ListaFiles[Idx];
if (DimensioneFile(NomeFile) = 0) then begin
ListaFiles.Delete(Idx);
end;
end;
Ciao, Mario