String

Anfängerfragen zum Programmieren mit PureBasic.
Janno
Beiträge: 99
Registriert: 27.10.2006 21:38
Wohnort: Niedersachsen

String

Beitrag 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
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag 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.
Janno
Beiträge: 99
Registriert: 27.10.2006 21:38
Wohnort: Niedersachsen

Beitrag 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??
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag 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
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag 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?
my pb stuff..
Bild..jedenfalls war das mal so.
Janno
Beiträge: 99
Registriert: 27.10.2006 21:38
Wohnort: Niedersachsen

Beitrag von Janno »

Cool Danke...
Habt mir beide sehr geholfen
Antworten