Variable mit einer String-Menge vergleichen

Anfängerfragen zum Programmieren mit PureBasic.
ThoPie
Beiträge: 130
Registriert: 19.05.2006 15:18
Kontaktdaten:

Variable mit einer String-Menge vergleichen

Beitrag von ThoPie »

Hallo,
ich muss bei einer String-Variable vergleichen, ob sie in einer Menge (ca. 50) von Strings vorkommt. Wie macht Ihr sowas? (Array, DataSection, LinkedList).
Ich hätte am Ende gerne so etwas ähnliches:
If Variable In{StringMenge} Then ...

Vielen Dank.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Naja, Arrays für eine fixe Menge von Strings und LL für eine dynamische Anzahl. Dann mit FindString() durschsuchen. Wenns sehr schnell gehen muss kannst du auch anstatt FindString() zu benutzen direkt den Speicher durchsuchen.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
N00B
Beiträge: 122
Registriert: 11.07.2007 22:28

Beitrag von N00B »

Ich glaub du suchst so was oder ?

Code: Alles auswählen

newlist durchsuchliste.s()

such_ich$ = "irgendwas"

foreach durchsuchliste.s()

 bla = findstring(durchsuchliste.s(),such_ich$,1)

 if bla <> 0
  Debug such_ich$+" in "durchsuchliste.s() gefunden"
 else

 EndIf
 
next
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Und wenn du das gefunden hast, solltest du innerhalb der If-Abfrage auf jeden Fall noch ein Break reinpacken, denn dann bricht er ab, wenn er was gefunden hat. Ohne Break durchsucht er immer die gesamte Liste, auch wenn er gleich am Anfang schon das gefunden hat, was er sucht.

Dieser Befehl spart dir also etwas Zeit.
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 »

könnte das auch so gehen, dass man die wertelist per blank abgetrennt
addiert in einen dann ziemlich dicken string und auf den z.b. die
findstring-funktion loslässt?

Code: Alles auswählen

haystack$=" wert1 wert2 wert3 wert4 wert3 wert5 ... wert50 "
needle$=" wert3 "

Debug "Finde "+Str(CountString(haystack$,needle$))+" Stück "+needle$
Debug "den ersten an Position "+Str(FindString(haystack$,needle$,0))
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten