> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Arbeiten mit Sammlungen

> Drei Arten von Sammlungen in ABBYY FineReader Engine: temporäre Sammlungen, Sammlungen untergeordneter Objekte und nur lesbare Sammlungen untergeordneter Objekte – und wie Sie die einzelnen verwenden.

<Note>
  C#-Beispiele und Informationen gelten nur für FRE für Windows.
</Note>

In ABBYY FineReader Engine gibt es drei Haupttypen von Sammlungen:

* temporäre Sammlungen (Sammlungen von Verweisen auf vorhandene Objekte)
* Sammlungen untergeordneter Objekte
* nur lesbare Sammlungen untergeordneter Objekte

Auf dieser Seite finden Sie Informationen zu Folgendem:

* wie Sie mit den einzelnen Sammlungstypen arbeiten

* wie Sie die Liste aller verfügbaren Sammlungen anzeigen

* wie Sie in FRE für Windows in .NET mit Sammlungen arbeiten

<div id="temporary-collections">
  ## Temporäre Sammlungen
</div>

Dieser Sammlungstyp stellt eine Sammlung von Verweisen auf vorhandene Objekte dar. Es handelt sich um temporäre Sammlungen, die in der Regel verwendet werden, um verschiedene Parametersätze an Methoden zu übergeben, die diese benötigen. Sie erstellen eine solche Sammlung, fügen ihr Elemente hinzu (die Elemente werden als Verweise auf vorhandene Objekte hinzugefügt), übergeben sie an die benötigte Methode und löschen die Sammlung anschließend, während die ihr hinzugefügten Objekte erhalten bleiben. Solche Sammlungen tragen in ihrem Namen das Suffix Collection (z. B. StringsCollection, IntsCollection).

So arbeiten Sie mit einer Sammlung dieses Typs:

1. Erstellen Sie die Sammlung mit der entsprechenden Erstellmethode des Objekts [Engine](/de/fine-reader/engine/api-reference/engine-object-iengine-interface). Für das Objekt IntsCollection ist dies beispielsweise die Methode [CreateIntsCollection](/de/fine-reader/engine/api-reference/engine-object-iengine-interface/creation-methods/createlessobjectgreater-methods). Diese Sammlungen können auch Rückgabewerte einiger Methoden sein.
2. Fügen Sie der Sammlung vorhandene Objekte mit der Methode [Add](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/add-method) hinzu. Sie können die Sammlung durchlaufen, indem Sie die nur lesbare Eigenschaft Count, die Eigenschaft [Element](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/element-property) mit Lese-/Schreibzugriff und die Methode [Item](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/item-method) verwenden. Die erste liefert die tatsächliche Anzahl der in der Sammlung enthaltenen Elemente, die zweite und dritte ermöglichen den Zugriff auf das Element am angegebenen Index. Mit der Eigenschaft Element können Sie in C# über den Operator \[] auf ein Element der Sammlung zugreifen.
3. Ändern Sie die Sammlung bei Bedarf mit weiteren Methoden der Sammlung: [InsertAt](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/insertat-method), [DeleteAt](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteat-method) und [DeleteAll](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteall-method).
4. Übergeben Sie die Sammlung als Parameter an die Methode, die sie benötigt.

Ein Beispiel für die Verwendung des Objekts IntsCollection in C#:

<Accordion title="C#-Code">
  ```csharp theme={null}
   
  for( int i = 0; i < Document.Pages.Count; i++ )
  {
   if( Document.Pages[i].PageStructureOutOfDate )
   {
    pageIndices.Add( i );
   }
  }
  // Übergeben Sie die erstellte Sammlung von Seitenindizes an eine Verarbeitungsmethode
  if( pageIndices.Count > 0 || Document.DocumentStructureOutOfDate )
  {
   Document.SynthesizePages( pageIndices, null );
  }
  ```
</Accordion>

<div id="collections-of-child-objects">
  ## Sammlungen untergeordneter Objekte
</div>

Ein weiterer Typ stellt eine Sammlung untergeordneter Objekte eines übergeordneten Objekts dar. Diese Sammlungen existieren, solange ihr übergeordnetes Objekt existiert. Über solche Sammlungen können Sie dem übergeordneten Objekt untergeordnete Objekte hinzufügen oder daraus entfernen. Wenn Sie ein Element zur Sammlung hinzufügen, wird intern ein neues Objekt erstellt und anschließend der Sammlung hinzugefügt. Beispiele für solche Sammlungen: DictionaryDescriptions – eine Sammlung von Wörterbuchbeschreibungsobjekten, BaseLanguages – eine Sammlung von Basissprachen.

So verwenden Sie solche Sammlungen:

1. Rufen Sie die Sammlung über die Eigenschaft ihres übergeordneten Objekts ab. Wenn Sie beispielsweise auf die Sammlung der Wörterbuchbeschreibungen einer Basissprache zugreifen möchten, verwenden Sie die Eigenschaft [DictionaryDescriptions](/de/fine-reader/engine/api-reference/language-related-objects/baselanguage#dictionarydescriptions) des BaseLanguage-Objekts.
2. Durchlaufen Sie die Sammlung mithilfe der nur lesbaren Eigenschaften Count und [Element](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/element-property) sowie der Methode [Item](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/item-method). Die erste gibt die tatsächliche Anzahl der in der Sammlung enthaltenen Elemente zurück, die zweite und dritte geben das Element am angegebenen Index zurück. Mit der Eigenschaft Element können Sie in C# mithilfe des Operators \[] auf ein Element der Sammlung zugreifen.
3. Fügen Sie bei Bedarf mit der Methode AddNew neue Elemente zur Sammlung hinzu. Die AddNew-Methoden verschiedener Sammlungen können eine leicht unterschiedliche Syntax haben, bewirken aber alle dasselbe: Sie erstellen ein neues Sammlungselement und fügen es der Sammlung hinzu. Elemente können Sie mit den Methoden [DeleteAt](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteat-method) und [DeleteAll](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/deleteall-method) löschen.

Ein Beispiel für die Arbeit mit dem Objekt DictionaryDescriptions in C#:

<Accordion title="C#-Code">
  ```csharp theme={null}
  FREngine.IEngine Engine = null;
  FREngine.IBaseLanguage baseLanguage = null;
  // Engine initialisieren und eine Basissprache einer Textsprache abrufen
  ...
  // Sammlung von Wörterbuchbeschreibungen einer Basissprache abrufen und alle Elemente entfernen
  IDictionaryDescriptions dictionaryDescriptions = baseLanguage.DictionaryDescriptions;
  dictionaryDescriptions.DeleteAll();
  // Eine Benutzerwörterbuchbeschreibung erstellen und der Sammlung hinzufügen
  IDictionaryDescription dictionaryDescription = dictionaryDescriptions.AddNew( DictionaryTypeEnum.DT_UserDictionary );
  ```
</Accordion>

<div id="read-only-collections">
  ## Nur lesbare Sammlungen
</div>

Einige Sammlungen untergeordneter Objekte sind nur lesbar. Das bedeutet, dass sie keine Methoden zum Bearbeiten haben; Sie können ihre Elemente nur durchlaufen und anzeigen. Beispiele für solche Sammlungen sind: PredefinedLanguages – eine Sammlung vordefinierter Sprachen, Paragraphs – eine Sammlung von Absätzen eines Texts.

So zeigen Sie die Elemente solcher Sammlungen an:

1. Rufen Sie die Sammlung über die Eigenschaft des übergeordneten Objekts ab. Wenn Sie beispielsweise auf die Sammlung von Absätzen eines Texts zugreifen möchten, verwenden Sie die Eigenschaft [Paragraphs](/de/fine-reader/engine/api-reference/text-related-objects/text#paragraphs) des Text-Objekts.
2. Durchlaufen Sie die Sammlung mithilfe der nur lesbaren Eigenschaften Count und [Element](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/element-property) sowie der Methode [Item](/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection/item-method). Die erste liefert die Anzahl der Elemente, die tatsächlich in der Sammlung enthalten sind, die zweite und die dritte liefern das Element am angegebenen Index. Mit der Eigenschaft Element können Sie in C# über den Operator \[] auf ein Element der Sammlung zugreifen.

Ein Beispiel für die Arbeit mit dem Paragraphs-Objekt in C#:

<Accordion title="C#-Code">
  ```csharp theme={null}
  FREngine.IEngine Engine = null;
  FREngine.IBlock block = null;
  // Engine initialisieren, ein Dokument erkennen und einen Textblock eines Layouts abrufen
  ...
  FREngine.ITextBlock textBlock = block.GetAsTextBlock();
  // Absätze des Texts des Blocks durchlaufen
  int paragraphsCount = textBlock.Text.Paragraphs.Count;
  for (int iPar = 0; iPar < paragraphsCount; iPar++)
  {
   FREngine.IParagraph par = textBlock.Text.Paragraphs[iPar];
   string text = par.Text;
  }
  ```
</Accordion>

<div id="all-available-collections">
  ## Alle verfügbaren Sammlungen
</div>

Nachfolgend finden Sie die vollständige Liste der in FineReader Engine verfügbaren Sammlungen. Einige Sammlungen bieten zusätzliche Methoden für die Arbeit mit Elementen. Einzelheiten finden Sie in der folgenden Tabelle.

<table>
  <thead>
    <tr>
      <th>
        <p>
          <strong>Sammlungen von untergeordneten Objekten</strong>
        </p>
      </th>

      <th>
        <p>
          <strong>Schreibgeschützte Sammlungen</strong>
        </p>
      </th>

      <th>
        <p>
          <strong>Temporäre Sammlungen</strong>
        </p>
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <ul>
          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/document-related-objects/authorslist">
                AuthorsList
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/language-related-objects/baselanguages">
                BaseLanguages
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/classification-related-objects/categories">
                Categories
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt über eine zusätzliche <strong>Find</strong>-Methode.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/layout-related-objects/checkmarkgroup">
                CheckmarkGroup
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/classification-related-objects/classificationobjects">
                ClassificationObjects
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt über eine zusätzliche <strong>Find</strong>-Methode;
            die <strong>AddNew</strong>-Methode wird durch die{" "}
            <strong>Add</strong>-Methode ersetzt.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/language-related-objects/dictionarydescriptions">
                DictionaryDescriptions
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/document-related-objects/documentinformationdictionary">
                DocumentInformationDictionary
              </a>
            </strong>

            {" "}

            – Diese Sammlung ist zugleich ein Wörterbuch; daher wird die{" "}
            <strong>Element</strong>-Eigenschaft durch die{" "}
            <strong>Value</strong>-Eigenschaft ersetzt.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/document-related-objects/frpages">
                FRPages
              </a>
            </strong>

            {" "}

            – Diese Sammlung untergeordneter Objekte unterscheidet sich von anderen desselben
            Typs. Sie verfügt nicht über die <strong>AddNew</strong>-Methode; stattdessen
            kann die <strong>AddPage</strong>-Methode des übergeordneten{" "}
            <strong>FRDocument</strong>-Objekts verwendet werden. Außerdem fehlt die{" "}
            <strong>DeleteAll</strong>-Methode; dafür stehen die zusätzlichen Methoden{" "}
            <strong>IndexOf</strong>, <strong>Remove</strong> und{" "}
            <strong>Swap</strong> zur Verfügung.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/layout-related-objects/layoutblocks">
                LayoutBlocks
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/text-related-objects/list">
                List
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt nicht über eine <strong>DeleteAt </strong>-Methode.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/document-related-objects/pdfattachments">
                PDFAttachments
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt anstelle der <strong>AddNew</strong>-Methode über die <strong>AddFromFile </strong>-Methode
            <strong> </strong>und die <strong>AddFromMemory</strong>-Methode (Windows).
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/parameter-objects/export-parameters/pdfpictures">
                PDFPictures
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/layout-related-objects/separatorgroup">
                SeparatorGroup
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/layout-related-objects/tableseparators">
                TableSeparators
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt über eine zusätzliche <strong>IndexOf</strong>-Methode.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/text-related-objects/tabpositions">
                TabPositions
              </a>
            </strong>
          </li>
        </ul>
      </td>

      <td>
        <ul>
          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/text-related-objects/barcodetext">
                BarcodeText
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/document-related-objects/businesscards">
                BusinessCards
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/document-comparison-objects/changes">
                Changes
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/text-related-objects/characterrecognitionvariants">
                CharacterRecognitionVariants
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/classification-related-objects/classificationresults">
                ClassificationResults
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/language-related-objects/detectedlanguages">
                DetectedLanguages
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/language-related-objects/fuzzystrings">
                FuzzyStrings
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/license-related-objects/licenses">
                Licenses
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt über eine zusätzliche <strong>Find</strong>-Methode.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/text-related-objects/paragraphlines">
                ParagraphLines
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/text-related-objects/paragraphs">
                Paragraphs
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt über eine zusätzliche <strong>IndexOf</strong>-Methode.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/language-related-objects/predefinedlanguages">
                PredefinedLanguages
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt über eine zusätzliche <strong>Find</strong>-Methode.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/mechanism-objects/scansources">
                ScanSources
              </a>

              {" "}

              (Windows)
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/supplementary-objects-and-methods/splitregions">
                SplitRegions
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt über eine zusätzliche{" "}
            <strong>GetSourcePageIndex</strong>-Methode.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/layout-related-objects/tablecells">
                TableCells
              </a>
            </strong>

            {" "}

            – Diese Sammlung verfügt über die zusätzlichen Methoden <strong>IndexOf</strong>,{" "}
            <strong>Merge</strong> und <strong>Split</strong>.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/classification-related-objects/trainingresults">
                TrainingResults
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/text-related-objects/wordrecognitionvariants">
                WordRecognitionVariants
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/text-related-objects/words">
                Words
              </a>
            </strong>
          </li>
        </ul>
      </td>

      <td>
        <ul>
          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/supplementary-objects-and-methods/stringscollection">
                StringsCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/supplementary-objects-and-methods/intscollection">
                IntsCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/image-related-objects/officeconverters">
                OfficeConverters
              </a>
            </strong>

            {" "}

            (nur Linux und Windows) – Diese Sammlung unterscheidet sich von allen anderen dadurch, dass sie Enumerationskonstanten enthält und keine Objekte. Sie verfügt außerdem über eine zusätzliche <strong>Find</strong>-Methode.
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/image-related-objects/trainingimagescollection">
                TrainingImagesCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>
              <a href="/de/fine-reader/engine/api-reference/supplementary-objects-and-methods/regionscollection">
                RegionsCollection
              </a>
            </strong>
          </li>

          <li>
            <strong>Visuelle Komponenten:</strong>

            <ul>
              <li>
                <strong>
                  <a href="/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellwordcollection">
                    SpellWordCollection
                  </a>
                </strong>
              </li>

              <li>
                <strong>
                  <a href="/de/fine-reader/engine/visual-components-reference/supplementary-objects/spellreplacementcollection">
                    SpellReplacementCollection
                  </a>
                </strong>
              </li>

              <li>
                <strong>
                  <a href="/de/fine-reader/engine/visual-components-reference/supplementary-objects/toolbar">
                    Toolbar
                  </a>
                </strong>

                {" "}

                – diese Sammlung verfügt über die zusätzlichen Methoden <strong>Delete</strong>{" "}
                und <strong>Has</strong>.
              </li>

              <li>
                <strong>
                  <a href="/de/fine-reader/engine/visual-components-reference/supplementary-objects/popupmenu">
                    PopupMenu
                  </a>
                </strong>

                {" "}

                – diese Sammlung verfügt über die zusätzlichen Methoden <strong>Delete</strong>{" "}
                und <strong>Has</strong> sowie die Eigenschaften <strong>CustomMenuEnabled</strong>
                und <strong>StandardMenuEnabled</strong>.
              </li>
            </ul>
          </li>
        </ul>
      </td>
    </tr>
  </tbody>
</table>

<div id="working-with-collections-in-net">
  ## Arbeiten mit Sammlungen in .NET
</div>

Alle Schnittstellen für Sammlungen leiten sich von der `IEnumerable`-Schnittstelle ab. Das bedeutet, dass Sie die `foreach`-Anweisung in C# (`For Each` in Visual Basic) verwenden können, um mit Sammlungen zu arbeiten. Beachten Sie, dass die Arbeit mit Sammlungen mittels `foreach` einige Besonderheiten aufweist: Enumeratoren können beispielsweise nicht zum Ändern der Sammlung verwendet werden, sondern nur zum Lesen der darin enthaltenen Daten. Siehe die Hinweise auf [msdn.microsoft.com](http://msdn.microsoft.com/en-us/library/system.collections.ienumerator.aspx).

Ein Beispiel für die Verwendung von `foreach` mit der FRPages-Sammlung in C#:

<Accordion title="C#-Code">
  ```csharp theme={null}
  FREngine.IFRDocument document;
  // Wir gehen davon aus, dass das Dokument einige Seiten enthält
  ...
  foreach( FREngine.IFRPage page in document.Pages ) {
   // etwas mit der Seite tun
  }
  ```
</Accordion>
