Sprung zum Seitenende Struktur Themen A...Z Titel << >>

CXI-Basis-Programmierreferenz / Version 2 / Datenspeicherung / CxiNode / Typübergreifende Funktionen /

FindOpen - Suchschleife beginnen

[C] CxiFindBuffer * cxiFindOpen (CxiHandle self, const char *namemask, const char *options)

[S2:STANDARD] Beginn einer Suchschleife

self:
Objekt, in dem gesucht werden soll; hier kann sowohl ein CxiHandle (C), als auch ein CxiNode/CxiTree (C++) angegeben werden

namemask:
Muster für Namen der Variablen, die gesucht werden sollen

options:
siehe Text

return:
- bei Erfolg ein CxiFindBuffer-Objekt ungleich 0,
- bei Fehler oder zu großer Indexnummer NULL

Hiermit beginnt die Suche nach Variablen.

Der Parameter self ist das Objekt, in dem gesucht werden soll (C-Handle oder C++-Objekt).

Die Angabe namemask stellt eine Suchmaske für Variablennamen dar, NULL wird in "*" umgesetzt (alle Variablennamen). Die Syntax für diesen Parameter ist bei cxiMatchesWildCard beschrieben.

Als options wird ein String mit Optionen angegeben (NULL ist gleichbedeutend mit ""):

Reihenfolge:
"d" (descending): Suche von hinten nach vorn,
sonst: Suche von vorn nach hinten (Vorgabe).

Typmaske:
"n" (no types): Die Typmaske wird leer initialisiert,
"v" (variables): Die Typmaske wird mit allen Typen außer cxiTypeSub initialisiert,
"s" (subtree): Die Typmaske wird nur mit dem Typ cxiTypeSub initialisiert,
sonst: Die Typmaske wird mit allen Typen initialisiert (Vorgabe).

Zurückgegeben wird ein Zeiger auf eine von cxiFindOpen dynamisch allokierte CxiFindBuffer-Struktur, dieser Wert muss an alle weiteren cxiFind...-Funktionen übergeben werden.

Die Struktur CxiFindBuffer enthält Daten über gefundene Variablen und zum Suchkriterium:

typedef struct _CxiFindBuffer
{
  /* von cxiFindNext gesetzte Informationen: */
  CxiType type;        /* Typ der gefundenen Variablen */
  CxiInt flags;        /* Flags der gefundenen Variablen */
  CxiLong size;        /* Pufferlänge für Abfrage der gefundenen Variablen, 0 für BOR */
  CxiInt datalength;   /* interne Datenlänge der gefundenen Variablen */
  CxiInt namelength;   /* Länge des Namens der gefundenen Variablen ohne \0 */
  char name [256];     /* Name der gefundenen Variablen, abgeschlossen mit \0 */

  /* von cxiFindOpen gesetzte Informationen (nachträglich änderbar): */
  char namemask [256]; /* Namensmaske für Suche */
  CxiLong typemask;    /* Typmaske für Suche */

  /* von cxiFindOpen gesetzte Informationen (nicht nachträglich änderbar): */
  CxiHandle object;    /* Objekt, in dem gesucht wird (intern) */
  CxiLong options;     /* Suchoptionen (intern) */
  CxiLong nextindex;   /* nächster Suchindex (intern) */

  /* Reserve + Interna: */
  CxiLong reserved [8];
}
CxiFindBuffer;

Beim Aufruf dieser Funktion wird noch nicht gesucht, die erste gefundene Variable wird erst von einem folgenden cxiFindNext-Aufruf geliefert. Mit cxiFindClose wird die Suchschleife beendet.

Zwischen den Aufrufen von cxiFindOpen und cxiFindNext darf nur dann ein Wechsel des Sichtfensters vorgenommen werden, wenn vor cxiFindNext in das ursprüngliche Fenster zurückgewechselt wird.

Um die Suchmaske für Variablennamen nachträglich zu ändern, kann nach dem Aufruf von cxiFindOpen direkt die Membervariable namemask verändert werden. Die Änderung wirkt sich unmittelbar auf den nächsten Aufruf von cxiFindNext aus.

Die Typmaske ist eine gepackte Liste aller derjenigen Datentypen, die bei der Suche berücksichtigt werden sollen. Ist ein Typ in der Typmaske enthalten, werden Variablen dieses Typs von cxiFindNext gefunden. Der anfängliche Wert der Typmaske wird mit den Optionen "n", "v" und "s" gesteuert (s.o.). Die Funktion cxiFindSetTypeMask kann benutzt werden, um die Typmaske individuell anzupassen.

Portabilität:
Diese Funktion ist ab Version 2.05 definiert und in allen unterstützten Systemen verfügbar.

Siehe auch:
FindSetTypeMask - Datentypmaske
FindNext - Fortsetzen der Suchschleife
FindClose - Beenden der Suchschleife


[i] CXI-Basis-Programmierreferenz
Version 2.10 72 (1014-001), erstellt am 15. April 2000
Textseite 142 von 855, Thema 8319 (FindOpen)
[c] Copyright (c) 1996-2000 by TeraConnect GmbH

Sprung zum Seitenanfang Struktur Themen A...Z Titel << >>