Seite 1 von 1

Stringverarbeitung

Verfasst: 10 Nov 2010, 11:21
von eih
Hallo allerseits.
Ich stehe gerade auf dem Schlauch, was die Stringlistenverarbeitung angeht.
Ich erhalte folgende Stringliste:

Code: Alles auswählen

[7] [10.11.2010 10:49:07]           (string   0)    Drucker124 (Kopie 2)	REG_SZ	winspool,Ne02:
[7] [10.11.2010 10:49:07]           (string   1)    Drucker124 (Kopie 1)	REG_SZ	winspool,Ne03:
[7] [10.11.2010 10:49:07]           (string   2)    Drucker124	REG_SZ	winspool,Ne04:
[7] [10.11.2010 10:49:07]           (string   3)    Drucker105Kyocera	REG_SZ	winspool,Ne05:
aus dieser Liste lasse ich mir jetzt jedes Element geben:

Code: Alles auswählen

for %s% in list1 do sub_find_myprinter
z. B.

Code: Alles auswählen

   Drucker124 (Kopie 2)	REG_SZ	winspool,Ne02:
Der String %s% hat ein paar Leerzieichen am Anfang, die mit

Code: Alles auswählen

set $s1$ = Trim("%s%")
entfernt werden.

Nun das eigentliche Problem:
Zum Löshen der Drucker brauche ich die Zeichenkette des Druckernamens, also z. B. "Drucker124 (Kopie 2)" (Die gesuchten Zeichenketten enthalten alle am Beginn "Drucker", danach kann abber alles mögliche kommen, insbesondere " (Kopie x)".
Da die Zeichenkette Leerzeichen enthalten können, kann ich also nicht einfach an den Leerzeichen aufsplitten.
Welche Funktion ist geeignet, ich fand nur SubstringBefore (STRINGWERT1, STRINGWERT2), das aber nicht geht, da die vorletzten beiden Zeichen variabel sind (Ne00, Ne01, ...)

Weis jemand Rat?

Re: Stringverarbeitung

Verfasst: 10 Nov 2010, 13:50
von d.oertel
Hi,

Code: Alles auswählen

set $line$ = takeFirstStringContaining($list1$, "Drucker")
set $list2$ =  splitStringOnWhiteSpace ($line$)
set $printername$ = takeFirstStringContaining($list2$, "Drucker")
gruss
d.oertel

Re: Stringverarbeitung

Verfasst: 10 Nov 2010, 15:35
von eih
Hallo Herr Oertel,
danke. Ich habe mich wahrscheinlich ungenau ausgedrückt.
Folgendes Ergebnis des oben angegebenen Codestückes:

Code: Alles auswählen

[5] [10.11.2010 15:27:05]   Set  $line$ = takeFirstStringContaining($list1$, "Drucker")
[6] [10.11.2010 15:27:05]       retrieving strings from $list1$ [switch to loglevel 7 for debugging]
[7] [10.11.2010 15:27:05]           (string   0)    Drucker124 (Kopie 2)	REG_SZ	winspool,Ne02:
[7] [10.11.2010 15:27:05]           (string   1)    Drucker124 (Kopie 1)	REG_SZ	winspool,Ne03:
[7] [10.11.2010 15:27:05]           (string   2)    Drucker124	REG_SZ	winspool,Ne04:
[7] [10.11.2010 15:27:05]           (string   3)    Drucker105Kyocera	REG_SZ	winspool,Ne05:
[7] [10.11.2010 15:27:05]           
[6] [10.11.2010 15:27:05]     The value of the variable "$line$" is now: "    Drucker124 (Kopie 2)	REG_SZ	winspool,Ne02:"
[5] [10.11.2010 15:27:05]   
[5] [10.11.2010 15:27:05]   Set  $list2$ =  splitStringOnWhiteSpace ($line$)
[6] [10.11.2010 15:27:05]       retrieving strings from splitStringOnWhiteSpace [switch to loglevel 7 for debugging]
[7] [10.11.2010 15:27:05]           (string   0)
[7] [10.11.2010 15:27:05]           (string   1)Drucker124
[7] [10.11.2010 15:27:05]           (string   2)(Kopie
[7] [10.11.2010 15:27:05]           (string   3)2)
[7] [10.11.2010 15:27:05]           (string   4)REG_SZ
[7] [10.11.2010 15:27:05]           (string   5)winspool,Ne02:
[7] [10.11.2010 15:27:05]           
[5] [10.11.2010 15:27:05]   
[5] [10.11.2010 15:27:05]   Set  $printername$ = takeFirstStringContaining($list2$, "Drucker")
[6] [10.11.2010 15:27:05]       retrieving strings from $list2$ [switch to loglevel 7 for debugging]
[7] [10.11.2010 15:27:05]           (string   0)
[7] [10.11.2010 15:27:05]           (string   1)Drucker124
[7] [10.11.2010 15:27:05]           (string   2)(Kopie
[7] [10.11.2010 15:27:05]           (string   3)2)
[7] [10.11.2010 15:27:05]           (string   4)REG_SZ
[7] [10.11.2010 15:27:05]           (string   5)winspool,Ne02:
[7] [10.11.2010 15:27:05]           
[6] [10.11.2010 15:27:05]     The value of the variable "$printername$" is now: "Drucker124"
Und das ist leider nicht das Gewünschte. Die Variable $printername$ soll "Drucker124 (Kopie 2)" hinterher enthalten.

Eine Idee wäre vielleicht, $list2$ wieder solange zusammenzusetzen, solange ein String ungleich "REG_SZ" ist. Weis ich aber leider auch nicht, welche Methode es macht. :oops: Und ich fürchte, dass dabei das Leerzeichen zwischen Kopie und 2 verlorengeht.

Re: Stringverarbeitung

Verfasst: 10 Nov 2010, 17:31
von d.oertel
Hi,

vorschlag:
$line$ mit splitstring an 'REGSZ' splitten und mit takestring den Teilsting 0 holen.
Den wieder mit splitstring an 'Drucker' splitten und mit takestring den Teilsting 1 auf $line1$ holen.
dann müsste Passen:
set $printername$ = "Drucker"+$line2$

Supportvertrag gefällig ?

gruss
d.oertel

Re: Stringverarbeitung

Verfasst: 10 Nov 2010, 18:11
von eih
Danke, Herr Oertel.
Supportvertrag ist da leider ein schwieriges Thema. Würde ich persönlich ja gerne. Wir sind eine Schule in einem Bundesland, welches arm aber sexy ist. ;)