EAGLE Help

lookup()


Funktion
Sucht Daten in einem String-Array.

Syntax
string lookup(string array[], string key, int field_index[, char separator]);
string lookup(string array[], string key, string field_name[, char separator]);

Rückgabewert
lookup liefert den Wert des Feldes, das durch field_index oder field_name markiert wird.
Existiert dieses Feld nicht oder wird kein passender String für key gefunden, kommt ein leerer String zurück.

Siehe auch fileread, strsplit

Ein array das mit lookup() benutzt werden kann, besteht aus Text-Strings, wobei jeder String einen Daten-Record darstellt.

Jeder Daten-Record enthält eine beliebige Anzahl von Feldern, die durch das Zeichen separator (default ist '\t', der Tabulator) getrennt sind. Das erste Feld in einem Record wird als key benutzt und hat die Nummer 0.

Alle Records müssen eindeutige key-Felder haben. Keines der key-Felder darf leer sein - ansonsten ist nicht definiert welcher Record gefunden wird.

Enthält der erste String in array einen "Header"-Record (der Record, in dem der Inhalt der Felder beschrieben wird), bestimmt lookup mit einem String field_name automatischen den Index des Feldes. Das erlaubt es, die lookup-Funktion zu benutzen, ohne genau zu wissen, welcher Feld-Index die gewünschten Daten enthält.
Es bleibt dem Benutzer überlassen, sicherzustellen, dass der erste Record tatsächlich Header-Informationen enthält.

Ist der key-Parameter beim Aufruf von lookup() ein leerer String, wird der erste String von array verwendet. Das erlaubt dem Programm zu bestimmen, ob ein Header-Record mit den gewünschten Feld-Namen existiert.

Enthält ein Feld das separator-Zeichen, muss es in Anführungszeichen eingeschlossen werden (wie in "abc;def", wobei hier das Semikolon (';') das Trennzeichen ist). Das gilt auch für Felder, die Anführungszeichen (") enthalten, wobei die Anführungszeichen im Feld verdoppelt werden müssen (wie hier: "abc;""def"";ghi" ergibt also abc;"def";ghi).
Es wird empfohlen den "tab"-Separator (default) zu verwenden, der diese Probleme nicht kennt (kein Feld kann einen Tabulator enthalten).

Hier folgt eine Beispiel-Daten-Datei (zur besseren Lesbarkeit wurde der Separator ';' verwendet):

Name;Manufacturer;Code;Price
7400;Intel;I-01-234-97;$0.10
68HC12;Motorola;M68HC1201234;$3.50

Beispiel

string OrderCodes[];
if (fileread(OrderCodes, "ordercodes") > 0) {
   if (lookup(OrderCodes, "", "Code", ';')) {
      schematic(SCH) {
        SCH.parts(P) {
          string OrderCode;
          // both following statements do exactly the same:
          OrderCode = lookup(OrderCodes, P.device.name, "Code", ';');
          OrderCode = lookup(OrderCodes, P.device.name, 2, ';');
          }
        }
      }
   else
      dlgMessageBox("Missing 'Code' field in file 'ordercodes');
   }

Index Copyright © 2005 CadSoft Computer GmbH