11.20 indexat()

Diese Funktion liefert den Index einer Sammlung an einer bestimmten Position. Die erlaubten Positionen gehen von 1 … itemcount() und ermöglichen somit einen Schleifendurchgang durch alle indizierten Werte.

Für Werte des Typs list, refvec und vector ist die Position mit dem eigentlichen Index identisch. Für einen hash-Wert gibt es keine definierte Reihenfolge der gelieferten Indizes. Für matrix-Werte erfolgt die Abbildung der aufsteigenden Positionen auf eine Ordnung, bei der alle (Spalten-)Werte einer Zeile aufsteigend hintereinander folgen.

Die Funktion gibt einen Fehler (fail) zurück falls die Position außerhalb des erlaubten Bereichs liegt oder es sich beim Value-Parameter nicht um eine Sammlung handelt.

Definition

anyvalue indexat
(
  anyvalue Value input,
  integer  Pos   input
)

Parameter

anyvalue Value input
In diesem Parameter wird die Werteliste angegeben, von welcher der Index erfragt werden soll.
integer Pos input
Position, für welche der Indexwert ermittelt werden soll.

Rückgabewert

Indexwert an der als Parameter übergebenen Position.

Beispiel

dialog D

on dialog start
{
  variable matrix Matrix := [
    [0,0] => "-?-",
    [1,1] => "germany",
    [1,2] => "berlin",
    [2,1] => "france" ];
  variable integer Pos;

  /* print the Matrix elements [1,1] [1,2] ... [2,2] */
  for Pos:=1 to itemcount(Matrix) do
    print sprintf("%s : %s", indexat(Matrix, Pos), valueat(Matrix, Pos));
  endfor
  exit();
}

Siehe auch

Eingebaute Funktionen .itemcount, keys(), valueat()

Methode :index()

C-Funktion DM_ValueIndex