Stringlisten.
Allgemeine Beispiele zur Verwendung der Klasse stringlist finden sie hier.
Stringlisten. Die Listen können mit den StringIDs der Listenpaletten (z.B. der Produktrecherche) oder 'manuell' gefüllt werden.
static StringList stringlist::alloc(int classid, int selection_type = 0)
Hole die StringIDs der Palette, die die Objekte der gewünschten classid enthalten. Wird keine entsprechende Palette gefunden, wird 0 zurückgegeben. Sonst wird die Liste mit den gewünschten StringIDs der geladenen Objekte gefüllt. Die Ergebnisliste muss mit stringlist::release wieder gelöscht werden.
Bitte beachten Sie, dass es zwischen den StringListen, die mit einer Klassen-ID erzeugt wurden und den einfachen
StringListen ohne Klassennummer einen wesentlichen Unterschied gibt:
Listen mit Klassen-ID spiegeln den aktuellen Inhalt der entsprechenden
Palette wider. In der Regel verfügen sie nicht selbst über Objekte, sie befragen jedesmal die zur Class-ID gehörende Palette. Ausser den StringIDs der Objekte können eine Reihe weiterer Informationen über die Objekte geholt werden (siehe hier). Aber die Elemente der Liste
sind festgelegt : entweder alle oder alle markierten Objekte der entsprechenden Palette.
Listen ohne Klassen-ID können für beliebige String-Daten verwendet werden. Sie enthalten eigene Objekte. Im Aufruf datapool::get_products z.B. kann eine StringList
übergeben werden, die mit den StringIDs der gewünschten Produkte befüllt wird. Diese Liste kann aber nicht dafür verwendet werden, den Spaltentext
des entsprechenden Produktes zu erfragen. (Das können Sie mit productlist::get machen.)
Name | Typ | Default | Beschreibung |
Return | StringList | Erzeugte Liste der 0 | |
classid | int | - | KlassenID der Palette |
selection_type | int | kAll | kAll = Alle Datensätze der Palette kEyeMarked = Nur die mit dem Auge markierten Datensätze der Palette kSelected = Nur die selektierten Einträge der Palette |
Erzeuge eine Liste mit den StringIDs der markierten Produkte.
#include "internal/panels.h"
StringList li = stringlist::alloc (kPanelProducts, kEyeMarked);
char * str;
for (str = stringlist::first (li); str; str = stringlist::next (li)) { showmessage (str); }
stringlist::release (li);
static StringList stringlist::alloc()
Erzeuge eine neue leere Liste. Die Liste muss mit stringlist::release wieder gelöscht werden.
Bitte beachten Sie, dass es zwischen den StringListen, die mit einer Klassen-ID erzeugt wurden und den einfachen
StringListen ohne Klassennummer einen wesentlichen Unterschied gibt:
Listen mit Klassen-ID spiegeln den aktuellen Inhalt der entsprechenden
Palette wider. In der Regel verfügen sie nicht selbst über Objekte, sie befragen jedesmal die zur Class-ID gehörende Palette. Außer den StringIDs der Objekte können eine Reihe weiterer Informationen über die Objekte geholt werden (siehe hier). Aber die Elemente der Liste
sind festgelegt : entweder alle oder alle markierten Objekte der entsprechenden Palette.
Listen ohne Klassen-ID können für beliebige String-Daten verwendet werden. Sie enthalten eigene Objekte. Im Aufruf datapool::get_products z.B. kann eine StringList
übergeben werden, die mit den StringIDs der gewünschten Produkte befüllt wird. Diese Liste kann aber nicht dafür verwendet werden, den Spaltentext
des entsprechenden Produktes zu erfragen. (Das können Sie mit productlist::get machen.)
Name | Typ | Default | Beschreibung |
Return | StringList | Erzeugte Liste oder 0 |
Erzeuge eine neue leere Stringliste.
StringList = stringlist::alloc (); stringlist::release (li);
static int stringlist::release(StringList li)
Lösche eine mit stringlist::alloc erzeugte Liste wieder.
Name | Typ | Default | Beschreibung |
li | StringList | - | Zu löschende Liste |
static int stringlist::length(StringList li)
Ermittle die Anzahl der Elemente einer Liste.
Name | Typ | Default | Beschreibung |
Return | int | Anzahl der Einträge der Liste | |
li | StringList | - | Liste |
int len = stringlist::length (li);
static char* stringlist::first(StringList li)
Hole den ersten Eintrag einer nichtleeren StringList. Nach erfolgreicher Ausführung steht der aktuelle Listenzeiger am Anfang der Liste.
Die Rückgabe ist der char*-Inhalt des gefundenen Listeneintrages. Der Rückgabewert darf nicht geändert oder gelöscht werden! Beachten Sie bitte außerdem, dass die Liste Leerstrings enthalten kann, die den Wert 0 liefern!
Name | Typ | Default | Beschreibung |
Return | char* | Erster Wert der Liste als char*
Der Rückgabewert darf nicht verändert oder gelöscht werden! |
|
li | StringList | - | Liste mit mindestens einem Element |
Das folgende Beispiel kann für Listen verwendet werden, die keinen 0-Eintrag haben.
int main () { StringList li = stringlist::alloc (); int i; char * s;
for (i=1; i<6; i++) stringlist::insert (li, itoa (i)); for (s=stringlist::first (li); s; s=stringlist::next (li)) { showmessage ("%s", s); } stringlist::release (li); }
static char* stringlist::next(StringList li)
Hole den Nachfolger des aktuellen Eintgrages einer StringList. Vor dem Aufruf muß der aktuelle Listenzeiger mit einer geeigneten Funktion (first, get_pos, get, ...) gesetzt worden sein! Nach erfolgreicher Ausführung wird der aktuelle Listenzeiger um eine Position nach hinten verschoben.
Die Rückgabe ist der char*-Inhalt des gefundenen Listeneintrages. Der Rückgabewert darf nicht geändert oder gelöscht werden! Beachten Sie bitte außerdem, dass die Liste Leerstrings enthalten kann, die den Wert 0 liefern!
Name | Typ | Default | Beschreibung |
Return | char* | Nachfolger des aktuellen Eintrages als char*
Der Rückgabewert darf nicht verändert oder gelöscht werden! |
|
li | StringList | - | Stringlist mit definierter Listenposition (first, get_pos, get, ...) |
static char* stringlist::prev(StringList li)
Hole den Vorgänger des aktuellen Eintrages einer StringList. Vor dem Aufruf muß der aktuelle Listenzeiger mit einer geeigneten Funktion (last, get_pos, get, ...) gesetzt worden sein! Nach erfolgreicher Ausführung wird der aktuelle Listenzeiger um eine Position zurück (nach vorne) verschoben.
Die Rückgabe ist der char*-Inhalt des gefundenen Listeneintrages. Der Rückgabewert darf nicht geändert oder gelöscht werden! Beachten Sie bitte außerdem, dass die Liste Leerstrings enthalten kann, die den Wert 0 liefern!
Name | Typ | Default | Beschreibung |
Return | char* | Vorgänger des aktuellen Eintrages als char*
Der Rückgabewert darf nicht verändert oder gelöscht werden! |
|
li | StringList | - | Stringlist mit definierter Listenposition (last, get_pos, get, ...) |
static char* stringlist::last(StringList li)
Hole den letzten Eintrag einer nichtleeren StringList. Nach Ausführung steht der aktuelle Listenzeiger auf dem letzten Element der Liste.
Die Rückgabe ist der char*-Inhalt des gefundenen Listeneintrages. Der Rückgabewert darf nicht geändert oder gelöscht werden! Beachten Sie bitte außerdem, dass die Liste Leerstrings enthalten kann, die den Wert 0 liefern!
Name | Typ | Default | Beschreibung |
Return | char* | Letzter Eintrag der Liste als char*
Der Rückgabewert darf nicht verändert oder gelöscht werden! |
|
li | StringList | - | Liste mit mindestens einem Element |
static int stringlist::get_pos(
StringList li,
char* val,
int setPos = 0)
Suche die Position eines Wertes in der Liste. Wird der Wert nicht gefunden, gibt die Funktion -1 zurück. Listenpositionen sind 0-basiert - das erste Element hat also die Position 0, das letzte die Position length-1.
Name | Typ | Default | Beschreibung |
Return | int | >= 0 : Erstes Auftreten des Wertes in der Liste -1 : Wert nicht gefunden |
|
li | StringList | - | Liste, in der der Wert gesucht werden soll |
val | String oder char* | - | Dieser Wert wird gesucht |
setPos | int | 0 | 0 : Listenposition unverändert lassen 1 : Aktuelle Listenposition auf Fundstelle setzen In Illustrator wird der Parameter ignoriert. |
static char* stringlist::get(
StringList li,
int pos,
int doSelect= 0)
Hole das i-te Element der Liste. Listenposition sind 0-basiert, das erste Element hat also die Position 0, das letzte die Position length-1.
Name | Typ | Default | Beschreibung |
Return | char* | Wert der Liste an der Stelle i oder 0.
Der Rückgabewert darf nicht verändert werden und wird bei folgenden Aufrufen der Funktion überschrieben. Hier finden Sie Informationen zu readonly-Rückgaben von Funktionen. |
|
li | StringList | - | Liste, aus der das Element geholt werden soll |
pos | int | - | 0-basierte Listenposition |
setPos | int | 0 | 0 : Listenposition unverändert lassen 1 : Aktuelle Listenposition auf pos setzen In Illustrator wird der Parameter ignoriert. |
char * str = stringlist::get (li, 0);
wlog ("", "%s\n", stringlist::get (li, 0));
char * str;
: str = stringlist::get (li, 10, 1);
static int stringlist::append(StringList li, char* val)
Element an die Liste anfügen. Am Ende der Liste wird ein neues String-Objekt angelegt, in das der Inhalt des übergebenen Strings val kopiert wird.
Name | Typ | Default | Beschreibung |
Return | int | 1 Aktion erfolgreich, 0 sonst | |
li | StringList | - | Liste, an die angefügt werden soll |
val | String oder char* | - | Anzufügender Wert |
stringlist::append (li, k);
static int stringlist::insert(
StringList li,
char* val,
int pos = -1)
Element in die Liste einfügen. An der angegebenen Listenposition wird ein neues String-Objekt angelegt, in das der Inhalt des übergebenen Strings val kopiert wird. Listenposition sind 0-basiert, das erste Element hat also die Position 0, das letzte die Position length-1.
Name | Typ | Default | Beschreibung |
Return | int | 1 Aktion erfolgreich, 0 sonst | |
li | StringList | - | Liste, in die eingefügt werden soll |
val | String oder char* | - | Anzufügender Wert |
pos | int | - | Einfügestelle 0 : Listenanfang Werte < 0 oder >= length : Anfügen sonst : Fehler |
stringlist::insert (li, 3, 0);
static int stringlist::remove(StringList li, char* val)
Der erste Eintrag des gegebenen Strings wird aus der Liste entfernt.
Name | Typ | Default | Beschreibung |
Return | int | 1 : Aktion erfolgreich 0 : sonst |
|
li | StringList | - | Liste, aus der gelöscht werden soll |
val | String or char* | - | Wert, der aus der Liste entfernt werden soll |
static int stringlist::remove_pos(StringList li, int pos)
Entferne eine Position aus der Liste. Listenposition sind 0-basiert, das erste Element hat also die Position 0, das letzte die Position length-1.
Name | Typ | Default | Beschreibung |
Return | int | 1 : Aktion erfolgreich 0 : sonst |
|
li | StringList | - | Liste |
pos | int | - | 0-basierte Löschposition |
static int stringlist::clear(StringList li)
Entferne alle Elemente der Liste.
Name | Typ | Default | Beschreibung |
Return | int | 1 : Aktion erfolgreich 0 : sonst |
|
li | StringList | - | Liste |
stringlist::clear (li);
static int stringlist::reload(long classid, int reloadAll = 0)
Neuladen der Datensätze einer Palettenliste. Wenn Sie die komplette Palettenliste neu laden wollen, rufen Sie die Funktion mit dem Parameter reloadAll = 1 auf, sonst werden nur die Einträge selbst neu geladen. Wenn sie nur die Linkbuttons der Liste(n) aktualisieren wollen, können sie den Befehl placeholder::update_link_states verwenden.
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
classid | int | - | Von WERK II vergebene Palettennummer 0 - alle geöffneten Paletten aktualisieren |
reloadAll | int | 0 | Komplette Liste neu laden? 0 : Nein, nur die Listeneinträge neu laden 1 : Ja, die Liste komplett neu laden |
static int stringlist::classid(StringList li)
ClassID der Listeneinträge. Mit dieser Klasse wurde die Liste initalisiert (stringlist::alloc).
Name | Typ | Default | Beschreibung |
Return | int | 0 oder ClassID. | |
li | StringList | - | Liste, deren classid ermittelt werden soll |
static int stringlist::complete(StringList li)
Enthält die Liste alle IDs der Palette oder nur die mit einem Auge markierten Einträge?
Name | Typ | Default | Beschreibung |
Return | int | 0 : Nur ausgewählte Einträge 1 : alle Einträge der Palette |
|
li | StringList | - | Liste |
static char* stringlist::gettext(
StringList li,
long index,
char* attribute,
char* result)
Hole den Wert eines Elementes der Liste. Die erfragbaren Attribute sind von der classid der Liste abhängig. Die Tabelle der gültigen Werte finden Sie hier.
Wurde die Liste als Palettenliste angelegt (alloc mit Angabe einer ClassID) werden zur Berechnung der aktuellen Werte der Liste nur deren ClassID, Auswahltyp und Länge verwendet. Die Werte der Elemente werden direkt aus der Palettenliste geholt, Inhalte der Listeneinträge bleiben unberücksichtigt.
Wurde die Liste nicht mit einer KlassenID oder mit einer unbekannten KlassenID erzeugt, wird der Elementinhalt direkt aus der Liste ermittelt. Die Attribut-Angabe bleibt dann unberücksichtigt.
Name | Typ | Default | Beschreibung |
Return | String oder char* (Abhängig von Parameter result) | Attributwert oder leer. Das Ergebnis ist ein Zeiger auf result. Wenn der Datentyp von result char* ist, muss der Zeiger über ausreichend zugewiesenen Speicher verfügen (char[100], alloc (100)).} | |
li | StringList | - | Liste |
index | int | - | 0-basierter Listenindex |
attribute | String or char* | - | Welcher Listenwert soll ermittelt werden? Siehe hier. Bei Listen ohne ClassID hat der Parameter keine Wirkung, es wird einfach der String an der genannten Position geholt. |
result | String or char* | - | Reservierter Speicher für das Ergebnis. |
static int stringlist::getint(
StringList li,
long index,
char* attribute)
Hole den Wert eines Elementes der Liste als Ganzzahl. Die erfragbaren Attribute sind von der classid der Liste abhängig. Enthält das Attribut einen Textwert ist das Ergebnis des Aufrufes undefiniert.
Wurde die Liste als Palettenliste angelegt (alloc mit Angabe einer ClassID) werden zur Berechnung der aktuellen Werte der Liste nur deren ClassID, Auswahltyp und Länge verwendet. Die Werte der Elemente werden direkt aus der Palettenliste geholt, Inhalte der Listeneinträge bleiben unberücksichtigt.
Wurde die Liste nicht mit einer KlassenID oder mit einer unbekannten KlassenID erzeugt, wird der Elementinhalt direkt aus der Liste ermittelt. Die Attribut-Angabe bleibt dann unberücksichtigt.
Name | Typ | Default | Beschreibung |
Return | int | Attributwert | |
li | StringList | - | Liste |
index | int | - | 0-basierter Listenindex |
attribute | String oder char* | - | Welcher Listenwert soll ermittelt werden? Siehe hier. Bei Listen ohne ClassID hat der Parameter keine Wirkung, es wird einfach der String an der genannten Position geholt und als Zahlenwert (falls möglich) zurückgegeben. |
static float stringlist::getfloat(
StringList li,
long index,
char* attribute)
Hole den Wert eines Elementes der Liste als Kommazahl. Die erfragbaren Attribute sind von der classid der Liste abhängig. Enthält das Attribut einen Textwert ist das Ergebnis des Aufrufes undefiniert.
Wurde die Liste als Palettenliste angelegt (alloc mit Angabe einer ClassID) werden zur Berechnung der aktuellen Werte der Liste nur deren ClassID, Auswahltyp und Länge verwendet. Die Werte der Elemente werden direkt aus der Palettenliste geholt, Inhalte der Listeneinträge bleiben unberücksichtigt.
Wurde die Liste nicht mit einer KlassenID oder mit einer unbekannten KlassenID erzeugt, wird der Elementinhalt direkt aus der Liste ermittelt. Die Attribut-Angabe bleibt dann unberücksichtigt.
Name | Typ | Default | Beschreibung |
Return | float | Attributwert | |
li | StringList | - | Liste |
index | int | - | 0-basierter Listenindex |
attribute | String oder char* | - | Welcher Listenwert soll ermittelt werden? Siehe hier. Bei Listen ohne ClassID hat der Parameter keine Wirkung, es wird einfach der String an der genannten Position geholt und als Zahlenwert (falls möglich) zurückgegeben. |
int stringlist::sort(
StringList li,
int direction = 0,
int case_insensitive = 0,
char* collation = "")
Sortiere die Liste. ACHTUNG : Listen, die mit ClassID allokiert wurden (z.B. stringlist::alloc (3, 2)) enthalten nur virtuelle Einträge. Die Werte werden bei stringlist::gettext, ... direkt und on the fly aus der Palette geholt. Um diese Listen zu sortieren, müssen die Werte zuvor erfragt und in eine andere Liste übertragen werden (siehe Beispiel).
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode | |
li | StringList | - | Liste, die sortiert werden soll |
direction | int | 0 | Sortierreihenfolge 0 : aufsteigend 2 : absteigend |
case_insensitive | int | 0 | Groß- und Kleinschreibung ignorieren oder nicht? 1 : Case insensitive (aAbBcC...) |
collation | String oder char* | "" | Sortierregeln. So wird etwa ä im Deutschen unter 'a' einsortiert, im
Schwedischen dagegen steht ä am Ende das Alphabetes. Geben Sie hier eine
gültige Beschreibung einer sog. Locale an. Am Mac-Terminal finden Sie eine Liste
der verfügbaren Sprach-Varianten mit dem Befehl locale -a. Hier einige
Beispiele: en_US.ISO8859-1 de_DE.ISO8859-1 sv_SE.ISO8859-1 tr_TR.ISO8859-9 |
Sortiere die Auswahl der Produktrecherche. Beachten Sie dass die Einträge der Liste alloc (3, 2) zuvor in eine Zwischenliste kopiert werden!
int wstring (char * s) { if (s) { wlog ("", " '%s'\n", s); }
return 0;
} int main () { StringList li1 = stringlist::alloc (3, 2); StringList li = stringlist::alloc (); char * s; char str [800]; int i;
for (i = 0; i < stringlist::length (li1); i++) { stringlist::gettext (li1, i, "Num", str); wlog ("", "%d***%s'\n", i, str); stringlist::append (li, str); }
wlog ("", "Unsortiert\n"); for (s = stringlist::first (li); s; s = stringlist::next (li)) wstring (s);
stringlist::sort (li, 0); wlog ("", "Sortiert\n"); for (s = stringlist::first (li); s; s = stringlist::next (li)) wstring (s);
stringlist::sort (li, 1); wlog ("", "Absteigend sortiert\n"); for (s = stringlist::first (li); s; s = stringlist::next (li)) wstring (s);
return 0; }
static char* stringlist::to_xml(StringList list, char* rootElementName = "strings")
Generiere die XML Struktur eines StringList-Objekts.Wenn Sie über die Verwendung dieser Funktion nachdenken, sind Sie möglicherweise an näheren Informationen zur Interaktion von cscript mit auf dem PubServer als PlugIn bereitgestellten Java-Methoden interessiert. Mehr Informationen dazu finden Sie hier.
Name | Typ | Default | Beschreibung |
Return | char* | xml string oder 0 bei Fehlern. Der Ergebnisstring ist nur bis zum nächsten Aufruf einer to_xml-Funktion gültig und darf nicht verändert oder freigegeben werden. | |
list | StringList | - | Object |
rootElementName | String oder char* | strings | Name des Root-Elements |
static StringList stringlist::from_xml(char* xml)
Generiere eine StringList-Objekt aus einer XML Struktur.
Wenn Sie über die Verwendung dieser Funktion nachdenken, sind Sie möglicherweise an näheren Informationen zur Interaktion von cscript mit auf dem PubServer als PlugIn bereitgestellten Java-Methoden interessiert. Mehr Informationen dazu finden Sie hier.
Name | Typ | Default | Beschreibung |
Return | StringList | Objekt vom Typ StringList. Dieses Objekt muss mit stringlist::release wieder freigegeben werden. | |
xml | String oder char* | - | xml string |
static int stringlist::add_all(
StringList target,
StringList src,
int deleteFromSource)
Füge alle Elemente der Liste src in die Liste target ein. Bei deleteFromSource != 0 werden die Elemente aus der Quellliste entfernt (aber nicht freigegeben)
Name | Typ | Default | Beschreibung |
Return | int | 0 oder Fehlercode. | |
target | StringList | - | Zielliste |
src | StringList | - | Quellliste |
deleteFromSource | int | 0 | Elemente aus der Quelliste entfernen |
Beispiele zu Stringlisten finden Sie in der Doku von list. Die dort aufgeführten Beispiele können analog für Listen vom Typ StringList verwendet werden.
list.2.html#class_example>Siehe list
Erzeuge eine Liste mit den StringIDs der markierten Produkte.
StringList li = stringlist::alloc (3, 1);
char * str;
for (str = stringlist::first (li); str; str = stringlist::next (li)) { showmessage (str); }
stringlist::release (li);
Das dritte Beispiel demonstriert die Verwendung von Stringlisten mit und ohne Class-ID. Markieren Sie dazu einige Einträge der Produktrecherche mit einem Auge und selektieren Sie einige andere Einträge durch Listenauswahl.
int main () { int id1, id2, id3; int num = 0; List prod = list::alloc(); List prod2 = list::alloc(); List prod3 = list::alloc(); StringList prod4 = stringlist::alloc (); // StringList without Class-ID StringList ppp = stringlist::alloc (3, 1); // StringList with Class-ID char strid[4000]; char name[4000]; char temp[4000];
if (gRun > 1) return 0; // only once
datapool::get_products ("selected ", prod, prod2, prod3, prod4); while (num<list::length(prod)) { id1 = list::get (prod ,num,0); id2 = list::get (prod2,num,0); id3 = list::get (prod3,num,0); stringlist::gettext (prod4, num, "", strid);
strcpy (temp, "get_products %d : \n\n"); strcat (temp, "id1=%d\n"); strcat (temp, "id2=%d\n"); strcat (temp, "id3=%d\n"); strcat (temp, "stringid via stringlist::gettext='%s'\n"); strcat (temp, "stringid via stringlist::get='%s'");
showmessage(temp, num+1, id1, id2,id3, strid, stringlist::get (prod4, num));
num = num+1; }
num = 0; while (num<stringlist::length(ppp)) { stringlist::gettext (ppp, num, "StringID", strid); stringlist::gettext (ppp, num, "Num", name);
strcpy (temp, "alloc by class 3 : entry %d\n\n"); strcat (temp, "stringid='%s'\n"); strcat (temp, "name='%s'");
showmessage(temp, num+1, strid, name);
num = num+1; }
list::release (prod); list::release (prod2); list::release (prod3); list::release (prod4); return 0; }
Alphabetic index HTML hierarchy of classes or Java