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

CXI-Basis-Programmierreferenz / Version 2 / Datenspeicherung / CxiNode / Zeichenketten /

GetAsStr - Variable als Zeichenkette auslesen

[C++] CxiString CxiNode :: GetAsStr (CxiName pname, int index = -1, const char *pdef = 0) const
[C++] char * CxiNode :: GetAsStr (CxiName pname, char *pbuffer, CxiShort psize, int index = -1, char *pdef = 0, CxiLong options = 0) const
[C] char * cxiGetAsStr ...P (CxiHandle self, CxiName pname, char *pbuffer, CxiShort psize, int index, char *pdef, CxiLong options)

[S1:BASIS] Liest eine Variable und gibt sie als Zeichenkette zurück

pname:
Name der Variablen oder Pfadangabe und Variablenname

pbuffer:
Puffer für den Wert der Variablen, der Inhalt des Puffers wird im Fehlerfall nicht verändert

psize:
Länge des Puffers, wird nicht verändert

index:
Index für Stringliste, sonst 0 oder -1

pdef:
Rückgabewert für den Fehlerfall (Vorgabe 0)

options:
- 0: Teilkonvertierungen nicht zulassen (siehe unten)
- cxiOptGetPartial: Teilkonvertierungen zulassen

return:
Gelesener Wert der Variablen, bei Fehler pdef bzw. CxiString(pdef)

Operatorschreibweise:
String = Objekt [pname]
String = Objekt [pname] [index]

Diese Funktion liest den Wert einer beliebigen Variablen und konvertiert ihn in eine Zeichenkette. Folgende Typen werden unterstützt:

- cxiTypeNum: Die Dezimaldarstellung der Variablen wird zurückgegeben, der Wert wird als 'signed long' interpretiert; die generierte Zeichenkette besteht aus einer Ziffernfolge ohne führende Nullen; ein Minuszeichen wird vorangestellt, falls der Wert der Variablen negativ ist; die Zeichenkette enthält keine Leerzeichen; dies entspricht dem Format "%ld" der Funktion printf.

- cxiTypeChr: Die Dezimaldarstellung der Variablen wird zurückgegeben, der Wert wird als 'unsigned char' interpretiert; die generierte Zeichenkette besteht aus einer Ziffernfolge ohne führende Nullen; die Zeichenkette enthält keine Leerzeichen; dies entspricht dem Format "%u" der Funktion printf.

- cxiTypeLog: Es wird "false" oder "true" zurückgegeben.

- cxiTypeNil: Es wird "nil" zurückgegeben.

- cxiTypeStr: Die Zeichenkette wird zurückgegeben.

- cxiTypeLst: Das durch den Parameter index (s.u.) bezeichnete Listenelement wird zurückgegeben.

- cxiTypePtr: Die systemspezifische Darstellung des Zeigers wird zurückgegeben; dies entspricht dem Format "%p" der Funktion printf.

- cxiTypeFun: Die systemspezifische Darstellung des Zeigers wird zurückgegeben; dies entspricht dem Format "%p" der Funktion printf.

Die Elemente einer Variable vom Typ cxiTypeLst sind beginnend mit 0 durchnummeriert. Der Parameter index gibt entweder direkt die Nummer des gewünschten Elements an (Werte größer oder gleich 0), oder er ist eine relative Position vom Ende der Liste ausgehend (negativer Wert). Der Wert 0 kennzeichnet also das erste, -1 das letzte Element der Liste.

Alle Variablen, die nicht vom Typ cxiTypeLst sind, werden als einelementige Listen aufgefasst, bei diesen muss also der Index 0 oder -1 angegeben werden. Alle anderen Angaben für den Index werden als Fehler zurückgewiesen.

Ist die Zeichenkette länger als durch den Parameter psize angegeben, bestimmt die Option cxiOptGetPartial die Vorgehensweise: Ist die Option gesetzt, werden psize-1 Zeichen des Strings und ein Nullbyte kopiert und die Funktion erfolgreich beendet. Ist die Option dagegen nicht gesetzt, wird nichts kopiert und pdef zurückgegeben.

[!] ACHTUNG ('char *'-Variante): Bei einem Fehler wird der Zeiger pdef zurückgegeben, der String pdef wird NICHT nach pbuffer kopiert! Soll der Vorgabewert im Puffer stehen, so muss der Puffer vor dem Aufruf dieser Funktion mit dem Vorgabewert initialisiert werden und dann beim Aufruf pdef=0 (Vorgabe) gesetzt werden. In diesem Fall liefert GetStr bei einem Fehler 0 und bei Erfolg != 0, im Puffer steht in jedem Fall der gewünschte Wert.

ACHTUNG: Fließkommazahlen werden von GetAsStr nicht unterstützt.

Resource-Referenzen werden aufgelöst. Ist dies nicht möglich, wird ein Fehler zurückgegeben.

Portabilität:
Diese Funktion ist in allen unterstützten Systemen verfügbar.

Siehe auch:
GetAsNum
GetNum

Beispiel:

#include <stdio.h>
#include "cxib.h"

int main (void)
{
  char buffer [256];
  CxiTreeMem a = "VAR1=1;VAR2=7,'3Hugo',9;VAR3='-17';VAR4=19";
  long nv1 = a.GetAsNum ("VAR1");
  long nv2 = a.GetAsNum ("VAR2", 1, -4, cxiOptGetPartial);
  long nv3 = a.GetAsNum ("VAR3");
  long nv4 = a.GetAsNum ("VAR4", 1, 13);
  printf ("\nnv1=%ld, nv2=%ld, nv3=%ld, nv4=%ld.\n", nv1, nv2, nv3, nv4);
  a.AppendItem ("VAR3", "+5", cxiOptInsertForce);
  printf ("sv1=%s.\n", a.GetAsStr ("VAR1", buffer, sizeof buffer));
  printf ("sv2=%s.\n", a.GetAsStr ("VAR2", buffer, sizeof buffer));
  printf ("sv3=%s.\n", a.GetAsStr ("VAR3", buffer, sizeof buffer));
  printf ("sv4=%s.\n", a.GetAsStr ("VAR4", buffer, sizeof buffer));
  a.AppendItem ("VAR4", "+21", cxiOptInsertForce);
  a.DumpVars (0, 0, 1);
  return 0;
}

Ausgabe des Programms:

nv1=1, nv2=3, nv3=-17, nv4=13.
sv1=1.
sv2=9.
sv3=+5.
sv4=19.

***[1] 1995-10-28 19:50:07.680 ***

<*Window*> <Root> \
VAR1                    Num     1
VAR2                    Lst     [0] "7"
                                [1] "3Hugo"
                                [2] "9"
VAR3                    Lst     [0] "-17"
                                [1] "+5"
VAR4                    Lst     [0] "+21"

Das genaue Format der Dump-Ausgabe ist versionsabhängig und kann daher von diesem Beispiel abweichen.


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

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