Seite 1 von 1

String

Verfasst: 27.10.2006 21:42
von Janno
ich suche eine funktion, die die eingabe in ein stringgadget mit vorgegebenen Wörtern vergleicht und nur dann ein neues Fenster öffnet, wenn es eine übereinstimmung zwischen der eingabe und den vorgegebenen Wort gibt

Kann mir da jemand helfen??
Danke schonmal im vorraus

Verfasst: 27.10.2006 21:58
von uweb
Das einfachste wäre wohl die vogegebenen Worte in einem Array (siehe Dim in der Hilfe) zu halten und die Eingabe in einer Schleife damit zu vergleichen (einfach per "="). Mit UCase(String$) könntest Du alles in Großschreibung konvertieren um verschiedene Schreibarten abzufangen (PureBord und Pureboard wären dann PUREBOARD = PUREBOARD).
Bei einer For-Next-Schleife könntest Du die Zählvariable als Index auf das Array verwenden.
Für die Rückmeldung bietet sich wohl MessageRequester() an.

Wenn Du das Ganze noch in eine Prozedur (Procedure - nur ein anderes Wort für Funktion) schreibst hast Du außer dem gewünschten Resultat noch das unbeschreibliche Gefühl es selbst gemacht zu haben.

Später könntest Du es noch ausbauen
- z.B. mit String-Vergleich mit Wildcards http://www.purebasic.fr/german/viewtopic.php?t=9625
im CodeArchiv http://www.purearea.net/pb/german/ findest Du aber auch einiges.

Verfasst: 27.10.2006 22:40
von Janno
Mit Arrays kenne ich mich leider gar nicht aus und mit der Hilfe kann ich da auch nichts anfangen.
Gibt es irgendwie noch was anderes oder kannst du mir das mit den Arrays genauer erklären??

Verfasst: 27.10.2006 23:06
von uweb
Viele Wege führen nach Rom. Ich kenne aber keinen Einfacheren.

Nun beraube ich Dich doch des Erfolges es ganz allein gemacht zu haben :

Code: Alles auswählen

  AnzahlElemente = 2
  Dim MyArray.s( AnzahlElemente-1) 
  ; AnzahlElemente-1 = 1
  ; das ergibt 2 Elemente weil die Zählung bei 0 (nicht bei 1) beginnt 
  MyArray(0) = "Hallo"
  MyArray(1) = "Welt"
  
  .... ; Die Eingabe
  
  For i = 0 To AnzahlElemente-1
   If MyArray(i) = ... 
   ;  = der Vergleichswert - das eingegebene Wort
   
   ... ; hier die Meldung - z.B. "Habe passendes Wort gefunden"
   
   EndIf
   Break  
   ; die For/Next Schleife direkt verlassen 
   ;- macht Sinn wenn jedes Wort nur einmal im Array vorkommt
   ; dann brauchen wir bei einem Treffer nicht weiter suchen
  Next

Verfasst: 27.10.2006 23:14
von #NULL
mit arrays kannst du einfach mit einem variablen-namen auf
mehrere verschiedene werte zugreifen. unterschieden werden
sie mit einem index, der in klammern angegeben wird, z.b:

Code: Alles auswählen

myArray(3)
vorher mußt du so ein array aber deklarieren, mit dem schlüsselwort Dim:

Code: Alles auswählen

Dim myArray(9)
..wobei die 9 dem compiler sagt, das du ein array mit 10 elementen haben willst, nämlich von 0 bis 9.

danach kannst du werte speichern:

Code: Alles auswählen

myArray(0)=100
myArray(1)=200
myArray(3)=3000
myArray(5)=555
myArray(8)=-12
myArray(9)=9
und lesen:

Code: Alles auswählen

Debug myArray(2)
Debug myArray(5)
..und in beiden fällen kannst du auch variablen als index nehmen:

Code: Alles auswählen

For k=0 To 9
  Debug myArray(k)
Next
ohne arrays müßtest du verschiedene variablen nehmen:

Code: Alles auswählen

myProblem0 = 0
myProblem1 = -16
myProblem2 = 33
myProblem3 = 1000
..und müßtest so immer alles zeile für zeile coden, ohne schleifen nutzen zu können und dergleichen :wink:




du kannst natürlich auch andere typen verwenden, z.b. Strings(achte auf das .s am ende):

Code: Alles auswählen

Dim myOtherArray.s(3)

myOtherArray(0) = "hell"
myOtherArray(1) = "0"
myOtherArray(2) = "wold"
myOtherArray(3) = ";)"

For n=0 To 3
  Debug myOtherArray(n)
next

alles klar?

Verfasst: 27.10.2006 23:43
von Janno
Cool Danke...
Habt mir beide sehr geholfen