Von FindString() und StringField()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> NETZWERKGERÄTE KÖNNEN AUCH LEERZEICHEN ENTHALTEN
Schrei mal nich so rum. Grade als Mod. Hier hab ich was dagegen:

Code: Alles auswählen

tmp$ = "9  25   1500 disconnected Drahtlosnetzwerkverbindung"

Debug PeekS(@tmp$+FindString(tmp$, "connected", 1)+9*SizeOf(Character))
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Jilocasin hat geschrieben:Meinst du

Code: Alles auswählen

tmp$ = "9  25   1500 disconnected Drahtlosnetzwerkverbindung"

Text$ = StringField(tmp$, CountString(tmp$, Space(1)) + 1, Space(1))

Debug Text$ 
?
Vielleicht noch eine kleine ergänzung. :wink:

Code: Alles auswählen

tmp$ = "9  25   1500 disconnected Drahtlosnetzwerkverbindung"

Text$ = StringField(tmp$, CountString(Trim(tmp$), Space(1)) + 1, Space(1))

Debug Text$
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Ach ja: Ich verlasse mich darauf, dass *connected gefunden wird. Kommt das auch immer vor? Bin zu faul, dieses netsh selbst zu testen.

@ al90:
Kleine Verbesserung, da sonst falsch gearbeitet wird:

Code: Alles auswählen

tmp$ = "9  25   1500 disconnected Drahtlosnetzwerkverbindung" 

Text$ = StringField(tmp$, CountString(RTrim(tmp$), Space(1)) + 1, Space(1)) 

Debug Text$ 
na, findste meine Verbesserung? :wink:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

sag ich ja auch nicht :D aber das Problem bleibt

wenn vor dem Netzgrätename immer was steht wie eaktiviert oder aktiviert dann nach den Inhalt NACH diesen de/aktiviert suchen


like that

Code: Alles auswählen

tmp$="habakuk ottokar aktiviert hugo Paul fred aktiviertes Gerät"
tmp$=Trim(Mid(tmp$,FindString(tmp$," aktiviert",0)+Len(" aktiviert"),256))
Debug tmp$

tmp$="habakuk ottokar deaktiviert hugo Paul fred deaktiviertes Grät"
tmp$=Trim(Mid(tmp$,FindString(tmp$," deaktiviert",0)+Len(" deaktiviert"),256))
Debug tmp$

‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

AND51 hat geschrieben: @ al90:
Kleine Verbesserung, da sonst falsch gearbeitet wird:
Wieso sollte denn bei Trim() falsch gearbeitet werden ? Meinst du vllt. falls
ein name mit SPACE beginnt ? Ist doch eher unwarscheinlich, oder ?
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

bobobo hat geschrieben:like that

Code: Alles auswählen

tmp$="habakuk ottokar aktiviert hugo Paul fred aktiviertes Gerät"
tmp$=Trim(Mid(tmp$,FindString(tmp$," aktiviert",0)+Len(" aktiviert"),256))
Debug tmp$
Wäre es so nicht sicherer ?

Code: Alles auswählen

tmp$="habakuk ottokar aktiviert hugo Paul fred aktiviertes Gerät" 
tmp$=Trim(Mid(tmp$,FindString(LCase(tmp$)," aktiviert",0)+Len(" aktiviert"),256)) 
Debug tmp$ 
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Genau. Habs getestet und manuell Spaces vorangestellt, dein Code arbeitete fehlerhaft.

> Ist doch eher unwarscheinlich, oder ?
Nun, wenn du das so siehst. Ich bin selbst kein Perfektionist (und möchte das auch nicht sein), aber ich finde, man sollte Fälle wie diesen mit abdecken.
Sagen wir's so: Ausgeschlossen ist es nicht, deshalb.

Trotzdem hat mein Code einen weiteren Vorteil: RTrim() ist schneller als Trim() :wink:
Wenn man verschiedene Befehle zur Verfügung hat, sollte man sie auch nehmen. Finde ich.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

AND51 hat geschrieben:Trotzdem hat mein Code einen weiteren Vorteil: RTrim() ist schneller als Trim() :wink:
Wenn man verschiedene Befehle zur Verfügung hat, sollte man sie auch nehmen. Finde ich.
Und dennoch hast du was wichtiges vergessen.: LCase() :wink:
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Versteh ich nicht...? Du hast den Befehl LCase() doch auch nicht benutzt...?
Krieg ich grad was nicht mit? :oops:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

AND51 hat geschrieben:Versteh ich nicht...? Du hast den Befehl LCase() doch auch nicht benutzt...?
Krieg ich grad was nicht mit? :oops:
Ich meinte damit deinen hier vorgestellten code. :wink:

Besser wäre es also z.b. so:

Code: Alles auswählen

tmp$ = "9  25   1500 DiScoNneCteD Drahtlosnetzwerkverbindung" 

Debug PeekS(@tmp$+FindString(LCase(tmp$), "connected", 1)+9*SizeOf(Character))
Und die moral der geschicht ? Jeder macht Fehler. :lol:
Antworten