Este tipo de colección representa un conjunto de referencias a objetos existentes. Son colecciones temporales; por lo general, se usan para pasar distintos conjuntos de parámetros a métodos que los requieren. Se crea la colección, se le agregan elementos (como referencias a objetos existentes), se pasa al método requerido y luego se destruye, mientras que los objetos agregados a ella permanecen. Estas colecciones llevan el sufijo Collection en sus nombres (por ejemplo, StringsCollection, IntsCollection).Para trabajar con una colección de este tipo:
Cree la colección mediante el método de creación correspondiente del objeto Engine. Por ejemplo, para el objeto IntsCollection, es el método CreateIntsCollection. Estas colecciones también pueden ser valores de retorno de algunos métodos.
Agregue objetos existentes a la colección mediante su método Add. Puede recorrer la colección mediante su propiedad Count, que es de solo lectura, la propiedad Element, que es de lectura y escritura, y el método Item. La primera obtiene el número de elementos realmente contenidos en la colección; la segunda y el tercero proporcionan acceso al elemento en el índice especificado. La propiedad Element le permite acceder a un elemento de la colección mediante el operador [] en C#.
Si es necesario, modifique la colección mediante otros métodos de la colección: InsertAt, DeleteAt y DeleteAll.
Pase la colección al método que la requiere como parámetro.
Un ejemplo de uso del objeto IntsCollection en C#:
Código C#
for( int i = 0; i < Document.Pages.Count; i++ ){ if( Document.Pages[i].PageStructureOutOfDate ) { pageIndices.Add( i ); }}// Pasa la colección creada de índices de página a un método de procesamientoif( pageIndices.Count > 0 || Document.DocumentStructureOutOfDate ){ Document.SynthesizePages( pageIndices, null );}
Otro tipo representa una colección de objetos secundarios de un objeto principal. Estas colecciones existen mientras exista su objeto principal. A través de estas colecciones, puede agregar o quitar objetos secundarios del objeto principal. Cuando agrega un elemento a la colección, se crea internamente un objeto nuevo y luego se agrega a la colección. Ejemplos de estas colecciones: DictionaryDescriptions, una colección de objetos de descripción de diccionario; BaseLanguages, una colección de idiomas base.Para usar estas colecciones:
Obtenga la colección mediante la propiedad de su objeto principal. Por ejemplo, si desea acceder a la colección de idiomas base de un idioma de reconocimiento, use la propiedad DictionaryDescriptions del objeto BaseLanguage.
Recorra la colección mediante las propiedades de solo lectura Count y Element, y el método Item. La primera obtiene el número de elementos que contiene realmente la colección; la segunda y la tercera obtienen el elemento en el índice especificado. La propiedad Element le permite acceder a un elemento de la colección mediante el operador [] en C#.
Si es necesario, agregue nuevos elementos a la colección mediante su método AddNew. Los métodos AddNew de distintas colecciones pueden tener una sintaxis ligeramente distinta, pero todos hacen lo mismo: crean un nuevo elemento de la colección y lo agregan a ella. Puede eliminar elementos mediante los métodos DeleteAt y DeleteAll.
Un ejemplo de cómo trabajar con el objeto DictionaryDescriptions en C#:
Código C#
FREngine.IEngine Engine = null;FREngine.IBaseLanguage baseLanguage = null;// Inicialice Engine y obtenga un idioma base de un idioma de texto...// Obtenga la colección de descripciones de diccionario de un idioma base y elimine todos los elementosIDictionaryDescriptions dictionaryDescriptions = baseLanguage.DictionaryDescriptions;dictionaryDescriptions.DeleteAll();// Cree una descripción de diccionario de usuario y agréguela a la colecciónIDictionaryDescription dictionaryDescription = dictionaryDescriptions.AddNew( DictionaryTypeEnum.DT_UserDictionary );
Algunas colecciones de objetos secundarios son de solo lectura. Esto significa que no tienen métodos de edición; solo puede iterarlas y ver sus elementos. Ejemplos de estas colecciones son: PredefinedLanguages – una colección de idiomas predefinidos; Paragraphs – una colección de párrafos de un texto.Para ver los elementos de estas colecciones:
Obtenga la colección a través de la propiedad de su objeto principal. Por ejemplo, si quiere acceder a la colección de párrafos de un texto, use la propiedad Paragraphs del objeto Text.
Recorra la colección mediante las propiedades de solo lectura Count y Element, y el método Item. La primera devuelve la cantidad de elementos que contiene realmente la colección; la segunda y la tercera devuelven el elemento en el índice especificado. La propiedad Element le permite acceder a un elemento de la colección mediante el operador [] en C#.
Un ejemplo de trabajo con el objeto Paragraphs en C#:
Código C#
FREngine.IEngine Engine = null;FREngine.IBlock block = null;// Inicialice Engine, reconozca un documento y obtenga un bloque de texto de un layout...FREngine.ITextBlock textBlock = block.GetAsTextBlock();// Recorra los párrafos del texto del bloqueint paragraphsCount = textBlock.Text.Paragraphs.Count;for (int iPar = 0; iPar < paragraphsCount; iPar++){ FREngine.IParagraph par = textBlock.Text.Paragraphs[iPar]; string text = par.Text;}
A continuación, se incluye la lista completa de las colecciones disponibles en FineReader Engine. Algunas colecciones ofrecen métodos adicionales para trabajar con elementos. Consulte la tabla siguiente para ver los detalles.
– esta colección cuenta con un método adicional Find.
– esta colección cuenta con un método adicional Find, mientras que el método AddNew es reemplazado por el método Add.
– esta colección es también un diccionario, por lo que la propiedad Element es reemplazada por la propiedad Value.
– esta colección de objetos hijo difiere de otras del mismo tipo. No cuenta con el método AddNew; en su lugar, puede utilizarse el método AddPage del
objeto padre FRDocument. Tampoco cuenta con el método DeleteAll, pero incluye los métodos adicionales IndexOf, Remove y
Swap.
– esta colección no cuenta con el método DeleteAt .
– esta colección cuenta con los métodos AddFromFile y AddFromMemory (Windows) en lugar del método AddNew.
– esta colección cuenta con un método adicional IndexOf.
– esta colección incluye el método adicional Find.
– esta colección incluye el método adicional IndexOf.
– esta colección incluye el método adicional Find.
– esta colección incluye el método adicional GetSourcePageIndex.
– esta colección incluye los métodos adicionales IndexOf, Merge y Split.
(solo para Linux y Windows) – Esta colección se diferencia de todas las demás en que contiene constantes de enumeración, no objetos. También tiene un método adicional, Find.
– esta colección tiene métodos adicionales, Delete y Has.
– esta colección tiene métodos adicionales, Delete y Has, y las propiedades CustomMenuEnabled y StandardMenuEnabled.
Todas las interfaces de colección derivan de la interfaz IEnumerable. Esto significa que puede usar la instrucción foreach en C# (for each en Visual Basic) para trabajar con colecciones. Tenga en cuenta que el uso de foreach con colecciones tiene algunas particularidades; por ejemplo, los enumeradores no se pueden usar para modificar la colección, sino solo para leer los datos que contiene. Consulte los comentarios en msdn.microsoft.com.Un ejemplo de uso de foreach con la colección FRPages en C#:
C# code
FREngine.IFRDocument document;// Suponemos que el documento contiene algunas páginas...foreach( FREngine.IFRPage page in document.Pages ) { // hacer algo con la página}