Questo tipo di raccolta rappresenta una raccolta di riferimenti a oggetti esistenti. Si tratta di raccolte temporanee; di norma vengono utilizzate per passare diversi insiemi di parametri ai metodi che li richiedono. Si crea la raccolta, si aggiungono elementi (gli elementi vengono aggiunti come riferimenti a oggetti esistenti), la si passa al metodo richiesto e poi la si elimina, mentre gli oggetti che vi erano stati aggiunti rimangono. Tali raccolte hanno il suffisso Collection nel nome (ad es., StringsCollection, IntsCollection).Per lavorare con una raccolta di questo tipo:
Creare la raccolta utilizzando il metodo di creazione corrispondente dell’oggetto Engine. Ad esempio, per l’oggetto IntsCollection si utilizza il metodo CreateIntsCollection. Queste raccolte possono essere anche valori di ritorno di alcuni metodi.
Aggiungere oggetti esistenti alla raccolta tramite il metodo Add. È possibile scorrere la raccolta utilizzando la proprietà Count di sola lettura, la proprietà Element in lettura-scrittura e il metodo Item. La prima restituisce il numero di elementi effettivamente contenuti nella raccolta, la seconda e la terza forniscono accesso all’elemento in corrispondenza dell’indice specificato. La proprietà Element consente di accedere a un elemento della raccolta tramite l’operatore [] in C#.
Se necessario, modificare la raccolta utilizzando gli altri metodi disponibili: InsertAt, DeleteAt, DeleteAll.
Passare la raccolta al metodo che la richiede come parametro.
Esempio di utilizzo dell’oggetto IntsCollection in C#:
Codice C#
for( int i = 0; i < Document.Pages.Count; i++ ){ if( Document.Pages[i].PageStructureOutOfDate ) { pageIndices.Add( i ); }}// Passa la raccolta creata di indici di pagina a un metodo di elaborazioneif( pageIndices.Count > 0 || Document.DocumentStructureOutOfDate ){ Document.SynthesizePages( pageIndices, null );}
Un altro tipo rappresenta una raccolta di oggetti figlio di un determinato oggetto padre. Queste raccolte esistono finché esiste il loro oggetto padre. Tramite tali raccolte è possibile aggiungere o rimuovere oggetti figlio dall’oggetto padre. Quando si aggiunge un elemento alla raccolta, viene creato internamente un nuovo oggetto che viene poi inserito nella raccolta. Esempi di tali raccolte: DictionaryDescriptions – una raccolta di oggetti dictionary description, BaseLanguages – una raccolta di base language.Per utilizzare tali raccolte:
Ottenere la raccolta tramite la proprietà del relativo oggetto padre. Ad esempio, per accedere alla raccolta di base language di un linguaggio di riconoscimento, utilizzare la proprietà DictionaryDescriptions dell’oggetto BaseLanguage.
Scorrere la raccolta utilizzando le proprietà di sola lettura Count e Element e il metodo Item. La prima restituisce il numero di elementi effettivamente contenuti nella raccolta, la seconda e la terza restituiscono l’elemento all’indice specificato. La proprietà Element consente di accedere a un elemento della raccolta tramite l’operatore [] in C#.
Se necessario, aggiungere nuovi elementi alla raccolta tramite il relativo metodo AddNew. I metodi AddNew delle diverse raccolte possono avere una sintassi leggermente diversa, ma tutti eseguono la stessa operazione: creano un nuovo elemento della raccolta e lo aggiungono ad essa. È possibile eliminare elementi tramite i metodi DeleteAt e DeleteAll.
Un esempio di utilizzo dell’oggetto DictionaryDescriptions in C#:
Codice C#
FREngine.IEngine Engine = null;FREngine.IBaseLanguage baseLanguage = null;// Inizializzare Engine e ottenere un base language di un linguaggio di testo...// Ottenere la raccolta di dictionary description di un base language e rimuovere tutti gli elementiIDictionaryDescriptions dictionaryDescriptions = baseLanguage.DictionaryDescriptions;dictionaryDescriptions.DeleteAll();// Creare una user dictionary description e aggiungerla alla raccoltaIDictionaryDescription dictionaryDescription = dictionaryDescriptions.AddNew( DictionaryTypeEnum.DT_UserDictionary );
Alcune raccolte di oggetti figlio sono di sola lettura. Ciò significa che non dispongono di metodi di modifica: è possibile solo iterare e visualizzarne gli elementi. Esempi di tali raccolte sono: PredefinedLanguages – una raccolta di lingue predefinite, Paragraphs – una raccolta di paragrafi di un testo.Per visualizzare gli elementi di tali raccolte:
Ottenere la raccolta tramite la proprietà del relativo oggetto padre. Ad esempio, per accedere alla raccolta dei paragrafi di un testo, utilizzare la proprietà Paragraphs dell’oggetto Text.
Scorrere la raccolta utilizzando le proprietà di sola lettura Count ed Element e il metodo Item. La prima restituisce il numero di elementi effettivamente contenuti nella raccolta, la seconda e la terza restituiscono l’elemento all’indice specificato. La proprietà Element consente di accedere a un elemento della raccolta tramite l’operatore [] in C#.
Un esempio di utilizzo dell’oggetto Paragraphs in C#:
Codice C#
FREngine.IEngine Engine = null;FREngine.IBlock block = null;// Inizializzare Engine, riconoscere un documento e ottenere un blocco di testo di un layout...FREngine.ITextBlock textBlock = block.GetAsTextBlock();// Scorrere i paragrafi del testo del bloccoint paragraphsCount = textBlock.Text.Paragraphs.Count;for (int iPar = 0; iPar < paragraphsCount; iPar++){ FREngine.IParagraph par = textBlock.Text.Paragraphs[iPar]; string text = par.Text;}
Di seguito è riportato l’elenco completo delle raccolte disponibili in FineReader Engine. Alcune raccolte forniscono metodi aggiuntivi per lavorare con gli elementi. Per ulteriori dettagli, vedere la tabella seguente.
– questa raccolta dispone di un metodo Find aggiuntivo.
– questa raccolta dispone di un metodo Find aggiuntivo,
mentre il metodo AddNew è sostituito dal metodo
Add.
– questa raccolta è anche un dizionario, pertanto la proprietà
Element è sostituita dalla proprietà
Value.
– questa raccolta di oggetti figlio si differenzia dalle altre dello stesso
tipo. Non dispone del metodo AddNew; al suo posto
è possibile utilizzare il metodo AddPage dell’oggetto padre
FRDocument. Non dispone inoltre del metodo
DeleteAll e include i metodi aggiuntivi
IndexOf, Remove e
Swap.
– questa raccolta non dispone del metodo DeleteAt .
– questa raccolta dispone del metodo AddFromFile e del metodo AddFromMemory (Windows)
al posto del metodo AddNew.
– questa raccolta dispone di un metodo IndexOf aggiuntivo.
– questa raccolta dispone di un metodo Find aggiuntivo.
– questa raccolta dispone di un metodo IndexOf aggiuntivo.
– questa raccolta dispone di un metodo Find aggiuntivo.
– questa raccolta dispone di un metodo
GetSourcePageIndex aggiuntivo.
– questa raccolta dispone dei metodi aggiuntivi IndexOf,
Merge e Split.
(solo Linux e Windows) – Questa raccolta si differenzia da tutte le altre
in quanto contiene costanti di enumerazione, non oggetti. Dispone inoltre
di un metodo aggiuntivo Find.
– questa raccolta dispone dei metodi aggiuntivi Delete,
Has.
– questa raccolta dispone dei metodi aggiuntivi Delete,
Has e delle proprietà CustomMenuEnabled
, StandardMenuEnabled.
Tutte le interfacce di raccolta derivano dall’interfaccia IEnumerable. Ciò significa che è possibile utilizzare l’istruzione foreach in C# (for each in Visual Basic) per manipolare le raccolte. Si noti che l’utilizzo delle raccolte tramite foreach presenta alcune particolarità: ad esempio, gli enumeratori non possono essere usati per modificare la raccolta, ma solo per leggere i dati in essa contenuti. Vedere le note su msdn.microsoft.com.Un esempio di utilizzo di foreach con la raccolta FRPages in C#:
Codice C#
FREngine.IFRDocument document;// Si presume che il documento contenga alcune pagine...foreach( FREngine.IFRPage page in document.Pages ) { // eseguire un'operazione con la pagina}