CXI-Basis-Programmierreferenz / Version 2 / Datenspeicherung / CxiNode / Dateifunktionen /
CxiError CxiNode :: DumpVars... (const char *fname = 0, const char *message = 0) const
static CxiError CXIB :: DumpVars... (CxiHandle self, const char *fname = 0, const char *message = 0)
CxiError cxiDumpVars... (CxiHandle self, const char *fname, const char *message)
Schreibt den Variablenblock oder Baum als Text in eine Datei (Debugging).
...:
DumpVarsLong = Langformat mit Adressen und HexDumps
DumpVarsShort = Kurzformat ohne Kopfdaten
DumpVars = Standardformat (siehe Text)
fname:
Name der Datei, NULL für Standardausgabe (DOS & OS/2), NULL für "CXIDUMP.LST" (Windows). Existiert die Datei bereits, werden die Daten angehängt.
message:
Überschrift für Ausgabe, NULL für Standardüberschrift
return:
cxiErrorCreate bei Dateizugriffsfehler, sonst 0
Die Memberfunktionen schreiben den Inhalt des eigenen Block (CxiNode oder CxiTree) in die Datei, die beiden anderen Funktionen verwenden als Quelle den Parameter self.
Das von diesen Funktionen geschriebene Format kann nicht wieder eingelesen werden!
DumpVars entspricht DumpVarsLong, wenn zur Compile-Zeit das Makro CXILONGDUMP gesetzt wird, sonst ist DumpVars gleichbedeutend mit DumpVarsShort.
ACHTUNG: Um Platz zu sparen, enthalten die erstellten Dump-Dateien Tabulatorzeichen (ASCII 9). Es wird mit dem TAB-Abstand 8 gearbeitet, dies ist die Standardeinstellung von DOS und BIOS. Stellen Sie den Editor auf diese Tabulatorweite ein oder konvertieren Sie die Datei vorher mit ANTITAB.
Portabilität:
Diese Funktionen sind in allen unterstützten Systemen verfügbar.
Beispiel:
Das genaue Format der Dump-Ausgabe ist versionsabhängig und kann daher von diesem und den anderen Beispielen abweichen.
// Beispielprogramm zu DumpVars...
#include "cxib.h"
int main ()
{
// Ein Beispielbaum
CxiTreeMem tm =
"Hugo=doof;Die Zahl Zehn=10;Boolescher Wert=FALSE;"
"Einelementige Liste=Text,;Keine Liste=Textstück;"
"Unterbaum1={Var1=1;MinusElf=-11;Zahlstring='12';}"
"Unterbaum2={Liste=Dies ist,'eine \4Liste\4',von Strings\n;}";
// Ein paar verschieden lange Binärvariablen
static const char binblock [29] = "abc defghijklmnopqrstuvw xyz";
tm.SetBin ("BinaryData", binblock, sizeof binblock);
tm.SetBin ("eins", binblock, 1);
tm.SetBin ("sieben", binblock, 7);
tm.SetBin ("acht", binblock, 8);
tm.SetBin ("neun", binblock, 9);
tm.SetBin ("zehn", binblock, 10);
tm.SetBin ("elf", binblock, 11);
tm.SetBin ("fuenfzehn", binblock, 15);
tm.SetBin ("sechzehn", binblock, 16);
// Dump
tm.DumpVarsShort ("DumpType.Dmp", "DumpVarsShort");
tm.DumpVarsLong ("DumpType.Dmp", "DumpVarsLong");
return 0;
}
Inhalt der Datei "DumpType.Dmp" nach dem Programmlauf:
***[1] 1995-11-19 01:20:25.660 *** DumpVarsShort
<*Window*> <Root> \
Hugo Str "doof"
Die Zahl Zehn Num 10
Boolescher Wert Log false
Einelementige Liste Lst [0] "Text"
Keine Liste Str "Textst<81>ck"
Unterbaum1 Sub
Unterbaum2 Sub
BinaryData Bin (29) 61 62 63 20 64 65 66 67... [abc defg]
eins Bin (1) 61 [a]
sieben Bin (7) 61 62 63 20 64 65 66 [abc def]
acht Bin (8) 61 62 63 20 64 65 66 67 [abc defg]
neun Bin (9) 61 62 63 20 64 65 66 67 68 [abc defgh]
zehn Bin (10) 61 62 63 20 64 65 66 67... [abc defg]
elf Bin (11) 61 62 63 20 64 65 66 67... [abc defg]
fuenfzehn Bin (15) 61 62 63 20 64 65 66 67... [abc defg]
sechzehn Bin (16) 61 62 63 20 64 65 66 67... [abc defg]
<Node> \Unterbaum1
Var1 Num 1
MinusElf Num -11
Zahlstring Str "12"
<Node> \Unterbaum2
Liste Lst [0] "Dies ist"
[1] "eine <04>Liste<04>"
[2] "von Strings<0A>"
***[2] 1995-11-19 01:20:25.690 *** DumpVarsLong
CXIB version = CXIB0DBA 2.04 17
Object address = @2191:4FF8 type 'C++ object'
Status() = 0x0 CXI#00000 <ok>
Internal flags = 0x1 (1)
CxiHandle = @26C6:0008 type 'CxiTree'
Window address = @270C:0008
Current size = 0x186 (390) bytes
Allocated size = 0x200 (512) bytes
Auto grow size = 0x100 (256) bytes
Current window = 0x0 (0)
Media type = 0x1 (1) 'CxiTreeMem'
Options = 0x0
Array size = 0xF (15) @26DF:0008
Name Type Len Value
<*Window*> <Root> \
Hugo Str 5 "doof"
Die Zahl Zehn Num 4 10 0xA
Boolescher Wert Log 0 false
Einelementige Liste Lst 7 String list (1 entry):
[0] "Text"
Keine Liste Str 10 "Textst<81>ck"
Unterbaum1 Sub 4 0x1 #1
Unterbaum2 Sub 4 0x2 #2
BinaryData Bin 29 <HexDump follows>
+0000 61 62 63 20 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F [abc defghijklmno]
+0010 70 71 72 73 74 75 76 77 20 78 79 7A 00 .. .. .. [pqrstuvw xyz....]
eins Bin 1 61 [a]
sieben Bin 7 61 62 63 20 64 65 66 [abc def]
acht Bin 8 61 62 63 20 64 65 66 67 [abc defg]
neun Bin 9 61 62 63 20 64 65 66 67 68 [abc defgh]
zehn Bin 10 <HexDump follows>
+0000 61 62 63 20 64 65 66 67 68 69 .. .. .. .. .. .. [abc defghi......]
elf Bin 11 <HexDump follows>
+0000 61 62 63 20 64 65 66 67 68 69 6A .. .. .. .. .. [abc defghij.....]
fuenfzehn Bin 15 <HexDump follows>
+0000 61 62 63 20 64 65 66 67 68 69 6A 6B 6C 6D 6E .. [abc defghijklmn.]
sechzehn Bin 16 <HexDump follows>
+0000 61 62 63 20 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F [abc defghijklmno]
<Node> \Unterbaum1
Var1 Num 4 1 0x1
MinusElf Num 4 -11 0xFFFFFFF5
Zahlstring Str 3 "12"
<Node> \Unterbaum2
Liste Lst 37 String list (3 entries):
[0] "Dies ist"
[1] "eine <04>Liste<04>"
[2] "von Strings<0A>"
>>> Node count = 0x3 (3)