[gelöst] Wie "mehrzeiligen" string aufsplitten ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

[gelöst] Wie "mehrzeiligen" string aufsplitten ?

Beitrag von scholly »

Von einem WMI-Aufruf

Code: Alles auswählen

opticals$ = WMI("SELECT * FROM Win32_cdromdrive,drive,name")
bekomme ich einen mehrzeiligen String zurück. Nach dem Speichern aus dem Debugger-Fenster heraus habe ich folgendes File:

Code: Alles auswählen

drive = H:

name = ATAPI CD-R/RW 4X4X32

drive = I:

name = HL-DT-ST DVDRAM GSA-4163B

Die Wertepaare werden augenscheinlich durch x0a0D getrennt.
Muß ich das "zu Fuß" aufdröseln oder gibts eine PB-Funktion, die mir hilft ?

TIA....
scholly
Zuletzt geändert von scholly am 17.05.2008 17:06, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

StringField() ist dein Freund... :wink:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

x0a0d
=> 1.byte $0d 2.byte $0a
=> #CRLF$

..normales "newline"
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Wie geht das denn?
Doku hat geschrieben:A one character 'Delimiter$' is used to split the string
Aber der Trenner besteht aus 2 Chars: 0A und 0D hintereinanander :(
Oder mißversteh ich da was ?
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Code: Alles auswählen

StringField(opticals$, 1, #CRLF$)
; oder
StringField(opticals$, 1, #LFCR$)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

mk-soft hat geschrieben: StringField(opticals$, 1, #LFCR$)
Danke :praise:
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Um's nochmal zu verdeutlichen: Der Separator$ beim Befehl StringField$ kann ein beliebiger String sein, also auch 2 zeichen oder meht umfassen.

Hier findest du weitere Nützliche String-Funktionen (z. B. StringField_InsertString) :allright:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Kann er nicht:

Code: Alles auswählen

s.s = "hallo#-du"
Debug StringField(s, 0, "#-")
Debug StringField(s, 1, "#-")
Debug StringField(s, 2, "#-")
Debug StringField(s, 3, "#-")
Mach einfach zuvor ein ReplaceString(file.s, #CRLF$, #LF$)
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Stimmt:
Gibt den Feldinhalt des 'String$' an der angegebenen Stelle 'Index' zurück. 'Trennzeichen$' ist das Zeichen, das zur Aufteilung des Strings benutzt wird (nur ein Zeichen lang). Die erste 'Index' Position ist 1.
Allso

Code: Alles auswählen

opticals$ = "Hallo" + #LFCR$ + "Welt"

opticals$ = ReplaceString(opticals$, #LFCR$, #LF$)
Debug StringField(opticals$, 1, #LF$)
Debug StringField(opticals$, 2, #LF$)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> Kann er nicht
Stimmt :o :?

Das habe ich in meiner ganzen Laufbahn nie gemerkt... Jetzt bricht aber 'ne Welt zusammen... StringField() war immer mein absoluter Lieblingsbefehl... :(

Ab ins "Feature Request Forum..." :)
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten