Scopo
Questa funzione permette di sapere se un documento è presente nella collection e ne torna l'indice.
Sintassi
int idx = 0 // L'idx a cui è presente il documento trovato
//
idx := Collection.FindIndex(documento)
//
idx := Collection.FindIndex(documento)
Argomenti
| Documento | E' un oggetto di tipo IDDocument che rappresenta il documento da cercare nella collection |
Valore di ritorno
Questa funzione ritorna l'indice del documento all'interno della collection, compreso fra 1 e Count, altrimenti torna zero.
Esempio di codice
// *****************************
// Ricerca il fornitore per nome
// *****************************
public void ProveCollection.Ricerca()
{
// Vado all'inizio
this.Fornitori.MoveFirst()
//
// Ciclo per tutti i fornitori
while NOT(this.Fornitori.IsEof())
{
Fornitori f = null // Il fornitore attuale
//
// prelevo il fornitore attualmente puntato dalla collection
f := this.Fornitori.GetAt()
//
// Se trovo il filtro di ricerca, lo eseguo
if Find(f.NomeSocieta, Filtro.Ricerca, ??) > ZERO
{
int idx = 0 // L'idx a cui è stato trovato
//
this.MostraAttuale()
//
// Dico anche dove era posizionato
idx := this.Fornitori.FindIndex(f)
EsempiDO.MessageBox(FormatMessage(MSG Stato Trovato, idx, ??, ??, ??, ??))
//
// Fine della ricerca
return
}
//
// Passo al prossimo
this.Fornitori.MoveNext()
}
//
// Non trovato, mostro messaggio
EsempiDO.MessageBox(MSG Trovato Fornitore +c Filtro.Ricerca)
}
// Ricerca il fornitore per nome
// *****************************
public void ProveCollection.Ricerca()
{
// Vado all'inizio
this.Fornitori.MoveFirst()
//
// Ciclo per tutti i fornitori
while NOT(this.Fornitori.IsEof())
{
Fornitori f = null // Il fornitore attuale
//
// prelevo il fornitore attualmente puntato dalla collection
f := this.Fornitori.GetAt()
//
// Se trovo il filtro di ricerca, lo eseguo
if Find(f.NomeSocieta, Filtro.Ricerca, ??) > ZERO
{
int idx = 0 // L'idx a cui è stato trovato
//
this.MostraAttuale()
//
// Dico anche dove era posizionato
idx := this.Fornitori.FindIndex(f)
EsempiDO.MessageBox(FormatMessage(MSG Stato Trovato, idx, ??, ??, ??, ??))
//
// Fine della ricerca
return
}
//
// Passo al prossimo
this.Fornitori.MoveNext()
}
//
// Non trovato, mostro messaggio
EsempiDO.MessageBox(MSG Trovato Fornitore +c Filtro.Ricerca)
}
- Se il documento è presente, allora la collection rimane posizionata su di esso, altrimenti la collection viene posizionata dopo l'ultimo elemento.
- La ricerca del documento avviene per puntatori. Viene ricercata cioè proprio l'istanza del documento passata come parametro. Se due documenti sono uguali, cioè rappresentano lo stesso record fisico sul database, ma in memoria sono memorizzati come istanze differenti, essi non verrebbero considerati uguali da questa funzione.
Ultima modifica: 25/10/2016 / Validità: da 6.5.2680
funzione