|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 22.11.2014, 12:39 Titel: Wörter Erkennung |
|
|
Hallo liebe Forennutzer,
ich möchte ein Spiel auf Textebene programmieren.
Dazu muss das Spiel bei der Eingabe eine Reihenfolge bestimmter Wörter erkennen können.
Beispielfrage des Spieler wäre: "Was hörst du für Musik?"
Erkennen soll das Programm nur "hörst" und "Musik"
Wie lässte sich sowas in Freebasic programmieren ?
Eine weitere Frage ist, ob es möglich ist eine Fehlertoleranz zu programmieren, so das auch "örst" und "usik" erkannt werden ?
Wie weit lässt sich dies, wenn möglich einstellen ?
Vielen Dank im vorraus.
mfg, Kay. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 22.11.2014, 12:52 Titel: |
|
|
Es wäre erst mal sinnvoll, wenn du beschreibst, was du schon hast und wo deine Probleme sind. Wenn dein Problem die Erkennung des geschriebenen Textes ist, ist das ja kein FreeBASIC-spezifisches Problem, und das ist im Allgemeinen ein sehr komplexes Problem der künstlichen Intelligenz. Je nachdem wie komplex du das haben willst kannst du einfach prüfen, ob bestimmte Worte im eingegebenen String vorhanden sind (per INSTR) oder du baust eine selbstlernende Maschine, die tatsächlich Sätze verstehen kann.... Nichts ist unmöglich! _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 22.11.2014, 13:00 Titel: |
|
|
Ich habe noch nichts programmiert sondern wollte mich, bevor ich anfange, erstmal erkundigen, welche Möglichkeiten sich ergeben.
Ist ja auch abzuwägen wie komplex das ganze werden soll.
Darüber mache ich mir grad so Gedanken. |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 22.11.2014, 16:52 Titel: |
|
|
kay2016 hat Folgendes geschrieben: | Ich habe noch nichts programmiert [...] | ... heißt dass du hast nur für dieses Projekt noch nichts programmiert oder überhaupt noch nichts?
Ich glaube nämlich du unterschätzt die Komplexität für sowas ganz gewaltig. Es klingt ja so als wolltest du ein Programm erstellen, dass quasi "versteht" was der Nutzer fragt. Mit Einschränkungen ist das sicher möglich und je größer diese Einschränkungen sind desto einfacher wird es, aber deine Fragestellung klingt nicht gerade danach als ob für so etwas bereit wärst.
Wenn du z.B. eine definierte Liste an Wörtern hast nach denen du suchst wäre die Implementierung recht einfach. Mit sehr einfachen Metriken wie dem Hamming-Abstand oder Levenshtein-Distanz könntest du dann bestimmen, ob ein Wort mit einem aus deiner Liste in etwa übereinstimmt. _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 22.11.2014, 17:43 Titel: Worterkennung, Gleichheit und Ähnlichkeit |
|
|
Hallo und willkommen im Forum!
Als Grundlage brauchst du wahrscheinlich eine Auflistung der relevanten Wörter (in Form eines Arrays von Strings), die du in den Freitext-Eingaben erkennen möchtest.
Code: | Dim BekannteWoerter(1 To 100) As String |
Wenn der Benutzer dann etwas eingibt, musst du die Freitext-Eingabe in ein verarbeitbares Format bringen. Eine lange Zeichenkette nutzt dir da erst einmal nicht so viel. Du müsstest nach der Eingabe im ersten Schritt daraus die einzelnen Wörter herausziehen, indem du den Gesamt-String an den Satzzeichen, Leerzeichen und anderen Whitespaces splitten lässt. Außerdem sollten Groß- und Kleinschreibung dabei ausgebügelt werden (mit LCASE oder UCASE). Das Ergebnis davon wäre wieder ein Array.
Aus der Freitexteingabe
Code: | Das also war des Pudels Kern! Ein fahrender Scolast? Der Casus macht mich lachen. |
müsstest du das Array
Code: | das
also
war
des
pudels
kern
ein
fahrender
scolast
der
casus
macht
mich
lachen |
herausbekommen.
Wenn du soweit bist, ist es zur Suche nach exakten Übereinstimmungen nicht mehr weit. Kennst du aus dem Mathe-Bereich die Summenzeichen, bei denen ein Index wie i von 0 bis x oder so läuft? Sowas bräuchtest du auch im Programm, allerdings 2 Stück ineinander verschachtelt. Man spricht da von Zählschleifen. Zählschleifen werden benutzt, um Programmteile für eine bestimmte Anzahl Durchgänge wiederholt zu durchlaufen.
Der Pseudocode dazu wäre:
Code: | MachFolgendesFürAlleBekanntenWörter (aktueller Index sei i)
MachFolgedesFürAlleTeilwörterAusDerEingabe (aktueller Index sei j)
If (BekanntesWort(i) = EingabeTeilwort(j)) Then
Print "Treffer! " & EingabeTeilwort(j) & " erkannt!"
End If
EndeDerInnerenSchleife
EndeDerAuesserenSchleife |
Für jedes einzelne der bekannten Wörter würden alle Wörter der Eingabe überprüft, ob sie damit übereinstimmen. Wenn du 10 bekannte Wörter hast und die Benutzereingabe aus 6 Wörtern bestünde, gäbe es insgesamt also 60 IF-Abfragen. ("Jedes mit jedem vergleichen.")
Die erkannten Treffer könnte man natürlich nicht nur auf dem Bildschirm ausgeben, sondern diese wiederum in ein Array packen, damit man sie später auswerten kann. Zum Beispiel (in der allereinfachsten Variante) so:
Code: | If ((AnzahlTreffer >= 2) AND (Treffer(1) = "pizza") AND (Treffer(2) = "salami")) Then
Print "Gute Wahl! In unsere Salami kommt nur feinstes Bisamfleisch rein!"
End If |
Je nach Anforderungen müsste man das vielleicht etwas komplizierter machen, wenn z. B. zwischen "pizza" und "salami" noch ein weiterer, hier unwichtiger, Treffer erzielt werden könnte. Dann müsste man eher Richtung "Befindet sich dieses Wort irgendwo im Treffer-Array?" arbeiten, statt feste Indizes zu benutzen.
Wenn man das ganze jetzt noch um eine unscharfe Suche erweitern möchte, bietet sich die Levenshtein-Distanz an, die St_W schon erwähnt hat. Mit diesem Algorithmus erhält man ein mathematisch nutzbares Maß für die Unterschiedlichkeit zweiter Wörter ("Wie viel muss ich am ersten Wort ändern, um daraus das zweite Wort zu machen?"). Statt in der Vergleichsschleife ("Jedes mit jedem") nur mit = auf Gleichheit zu prüfen, könnte man zusätzlich prüfen, ob die Levenshtein-Distanz der beiden Wörter eine bestimmte Schwelle unterschreitet. Zwischen "pizza" und "pizzo" wäre die Distanz z. B. nur 1.
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 23.11.2014, 00:01 Titel: |
|
|
Hallo!
Das hört sich nach Eliza an.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 23.11.2014, 11:39 Titel: |
|
|
Vielleicht sollte ich zu Erklärung hinzufügen, dass ich 37 bin und BASIC nur aus früherer Programmierversuchen zu meinem damaligen C64 kenne.
Das Programm soll nicht "verstehen" was man fragen möchte.
Es soll schlichtweg, wenn z.B. zwei Wörter in einem INPUT vorkommen die resultieren Antwort "posten" und für die Wörter, für welche es keinen programmierte Antwort gibt - einfach ignorieren (durch IGNORE ?)
Ich danke Euch schonmal für die echt wahnsinnig ausgiebigen Antworten, welche wesentlich länger und informativer sind, als ich es mir erhofft hatte.
Die Levenshtein-Distanz werde ich mir anschauen, war mir bisher nicht bekannt.
Als Programmieranfänger werde ich mir die erwähnten Dinge zu Gemüte führen und bei weiteren Fragen einfach anknüpfen bzw. wenn spezifischer einen neuen Thread eröffnen.
VIELEN DANK !!
EDIT: wie mache ich sowas in freebasic ?
http://youtu.be/ac17YnQRJ7E?t=4m46s
Das wäre zumindest etwas, womit ich anfangen könnte.[/url]
EDIT2: Lösung hier gefunden: http://de.wikibooks.org/wiki/FreeBasic:_If_Abfragen |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 23.11.2014, 15:43 Titel: |
|
|
Grundsätzlich kannst du in FreeBASIC recht ähnlich arbeiten wie im Programm gezeigt, mit ein paar zusätzlichen Anmerkungen:
Variablen, die du verwendest (wie A im Video), müssen in FreeBASIC deklariert werden. Suffixe sind dabei nicht mehr zulässig. Du brauchst also zu Beginn ein
siehe http://www.freebasic-portal.de/befehlsreferenz/dim-175.html
(ich würde allerdings einen besseren Variablennamen verwenden )
GOTO lässt sich in diesem Beispiel gut über ein Schleife vermeiden (FreeBASIC arbeitet sowieso ohne Zeilennummern); siehe. z. B. http://www.freebasic-portal.de/befehlsreferenz/do-loop-198.html
INPUT und IF arbeiten in allen mir bekannten BASIC-Dialekten nahezu identisch. Zum Nachlesen:
http://www.freebasic-portal.de/befehlsreferenz/input-anweisung-315.html
http://www.freebasic-portal.de/befehlsreferenz/if-then-302.html
(Und natürlich gibt es im Portal eine Unmenge an Tutorials und Codebeispielen. )
Zitat: | Es soll schlichtweg, wenn z.B. zwei Wörter in einem INPUT vorkommen die resultieren Antwort "posten" und für die Wörter, für welche es keinen programmierte Antwort gibt - einfach ignorieren (durch IGNORE ) |
Das würde z. B. über eine mehrfache IF-Abfrage laufen (IF ... ELSEIF ... ELSEIF ... ... ELSE ... END IF). Es gäbe da noch SELECT CASE, das wird sich in deinem Szenario aber wohl nicht einsetzen lassen.
Mein Vorschlag wäre, es zunächst einmal über das (an sich recht ineffektive) INSTR zu probieren (das verschafft relativ schnelle Programmier-Erfolge) und langfristig die von Sebastian erwähnte Zerlegung über Arrays anstrebst. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Domso
Anmeldungsdatum: 02.02.2011 Beiträge: 109
|
Verfasst am: 23.11.2014, 17:39 Titel: |
|
|
so ein programm besteht prinzipiell aus 2 teilen.
zuerst musst du die eingabe zerlegen(parsen) und dannach auswerten
parsen:
der eigentliche parser an sich ist keine größere angelegenheit
(theorie: s. http://de.wikipedia.org/wiki/Kellerautomat)
das eigentliche hauptproblem liegt hier an der aufbau der dt. sprache
also musst du wahrscheinlich die komplexität der eingaben einschränken, zb keine nebensätze, etc.
nehmen wir mal an, jede eingabe hätte folgenden aufbau:
<Subjekt><Prädikat>(<Objekt>)(<Prädikat>)
(leider ist deutsch hier sehr unschön, da die position der satzglieder nicht fest ist, zb: Ich habe keine Musik gehört)
dann würde ich gesamt irgendwie so vorgehen:
Code: |
Dim As String eingabe 'jeweils nur ein satz, bei eingaben mit mehreren sätzen ->aufspalten
Dim As String stack = "SPO"
Do
Select Case stack[0]
Case Asc(S)
suche in der eingabe nach Subjekt
wenn gefunden dann:
lösche Subjekt aus Eingabe und speichere es ab
lösche erstes zeichen von stack (S)
sonst:
Syntax Error
Case Asc(P)
suche nach hilfsverb
wenn gefunden dann:
lösche hilfsverb aus Eingabe und speichere es ab
verschiebe erstes zeichen von stack nach hinten
Exit Select
sonst:
suche nach prädikat
wenn gefunden dann:
lösche prädikat aus der eingabe und speichere es ab
lösche erstes zeichen von stack
Exit Select
sonst:
Syntax Error
Case Asc(O)
Suche nach Objekt
lösche erstes zeichen von stack 'optional
wenn gefunden dann:
lösche objekt aus eingabe und speichere es ab
Case Else
Syntax Error
End Select
Loop Until stack = "" Or SyntaxError
If eingabe <> "" Then SyntaxError
BSP:
eingabe: ich höre musik
stack: SPO
->S
Subjekt: ich
eingabe: höre musik
stack: PO
->P
Subjekt: ich
Prädikat: höre
eingabe: musik
stack: O
->O
Subjekt: ich
Prädikat: höre
Objekt: musik
eingabe: ""
stack: ""
-> finish
BSP:
eingabe: ich habe musik gehört
stack: SPO
->S
Subjekt: ich
eingabe: habe musik gehört
stack: PO
->P
Subjekt: ich
Prädikat: habe
eingabe: musik gehört
stack: OP
->O
Subjekt: ich
Prädikat: habe
Objekt: musik
eingabe: gehört
stack: P
->P
Subjekt: ich
Prädikat: habe gehört
Objekt: musik
eingabe: ""
stack: ""
->finish
|
anschließend kannst du dir dann einen einfachen sprachinterpreter schreiben, der die daten auslesen kann |
|
Nach oben |
|
|
RockTheSchock
Anmeldungsdatum: 04.04.2007 Beiträge: 138
|
Verfasst am: 23.11.2014, 19:57 Titel: Vorgaben machen |
|
|
Du könntest mögliche Worte/Sätze vorgeben, z.B. wie bei The Secret of Monkey Island. Das kann wenn du in jeder Situation genug Auswahl hast evt. auch gut sein. |
|
Nach oben |
|
|
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1211 Wohnort: Ruhrpott
|
Verfasst am: 23.11.2014, 21:21 Titel: |
|
|
Ich glaube, dir schwebt etwas sehr viel einfacheres vor, etwa in dieser Art: Code: | #Include "windows.bi"
Dim As String eingabe, ausgabe
Input "Satz ";eingabe
eingabe = LCase(eingabe) 'umwandeln in kleinbuchstaben
OemToChar(eingabe,eingabe) 'vom ANSI- ins ASCII-Format wandeln (wg. umlauten)
If InStr(eingabe,"ast") And _ 'eingabe auf vorkommende wörter prüfen
InStr(eingabe,"zersägt") And _
InStr(eingabe,"gast") And _
InStr(eingabe,"erlegt") Then
ausgabe = "Dann wird das mit Knast belegt"
Else
ausgabe = "Hä?"
EndIf
CharToOem(ausgabe,ausgabe) 'vom ASCII- ins ANSI-Format wandeln
Print ausgabe
Sleep
|
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 23.11.2014, 22:31 Titel: |
|
|
grindstone, Du hast es erfasst.
genau, ich möchte keinen hochkomplexen Nachbau eines Sprachroboter schrauben, sondern das das Programm auf vorgegebene Textbausteine eine entsprechend dazugehörigen Antwort ausgibt.
Ich möchte gern mehr tippern, es geht mir nicht so sehr darum das ganz möglichst komplex zu machen, sondern mit möglichst einfach gestrickten Mitteln das gewünschte Ergebniss "rauszudrücken"
(Sorry für die harte Wortwahl^^) |
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 25.11.2014, 21:58 Titel: |
|
|
Code: | #Include "windows.bi"
'### Umlauteänderungscode
Function uANSI2ASCII (BYVAL ConvertString AS STRING) AS STRING
DIM AS STRING OutString=ConvertString
Static As UByte AscAnsDat(128)={ _
63, 63, 39, 159, 34, 46, 197, 206, 94, 37, 83, 60, 79, 63, 63, 63, _
90, 39, 39, 34, 34, 7, 45, 45, 126, 84, 115, 62, 111, 63, 122, 89, _
255, 173, 189, 156, 207, 190, 221, 145, 149, 184, 166, 174, 170, 240, 169, 238, _
248, 241, 253, 252, 239, 230, 244, 250, 247, 251, 167, 175, 172, 171, 243, 168, _
183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216, _
209, 165, 227, 224, 226, 229, 153, 158, 157, 235, 233, 234, 154, 237, 232, 225, _
225, 133, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139, _
208, 164, 149, 162, 147, 228, 148, 246, 155, 151, 163, 150, 129, 236, 231, 152}
FOR i AS INTEGER=0 TO LEN(OutString)-1
If OutString[i]>127 Then OutString[i]=AscAnsDat(OutString[i]-128)
NEXT i
RETURN OutString
END Function
'### Deklaration der Wörter
Dim Antworten as String
'### Definition der einzelnen Wörter
Antworten = "hallo"
'### SchleifenAnfang
Do
'### INPUT Anfang
input "Fragmich: ", Antworten
'### Sortierung nach den Wörtern und deren Ausgabe
select case Antworten
case "hallo"
print "Du hast also hallo geschrieben"
case "Mist"
print uANSI2ASCII("Wieso soll dein Passwort Mist sein?")
case "Mist, Müll"
Print uANSI2ASCII("Das ist Mist und Müll")
'### Aufruf uzm Programende
Case "Ende", "ende"
Print "Programm wird in wenigen Sekunden geschlossen..."
Sleep 2000
End
end Select
'### Schleifenstart
Loop |
Wie Ihr bestimmt erkennen werdet, ist die dritte case Abfrage (ich nenne es einfach mal so, weil ich nicht wirklich weiß, wie es heißt) Schrott und für zu keiner Antwort.
Wie kann ich es machen, dass die Eingabe von z.B. "Masern Mist Müll" zu der Antwort zu Mist AND Müll ausgegeben wird ? |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 27.11.2014, 13:17 Titel: |
|
|
Code: | Case "mist", "müll" |
Meinst du das?
EDIT: aso .. ne .. du meinst:
Code: |
'...
Case else
if (Antworten = "mist") AND (Antworten = "müll") Then
'...
End If
|
aber, dazu sei gesagt, das des so nicht geht ...
EDIT-2: .. oder?!? .. hmmm ... also .. iwi kapier ich nicht, was du machen willst.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 27.11.2014, 17:50 Titel: |
|
|
Also, wenn du sowohl bei der Antwort "Mist" als auch bei der Antwort "Müll" den entsprechenden Text ausgeben willst, klappt das mit
Allerdings wird dann "Mist" schon einen Schritt früher abgefangen und kommt gar nicht mehr bis zu dieser Zeile.
Willst du dagegen eine Meldung, wenn in der Antwort sowohl "Mist" als auch Müll vorkommt, dann bräuchtest du etwas in die Richtung von TPMs zweiten Vorschlag - allerdings mit INSTR, weil du ja nur einen Teilstring suchst.
Code: | if instr(Antworten, "Mist") > 0 AND instr(Antworten, "Müll") > 0 Then |
_________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 27.11.2014, 17:58 Titel: |
|
|
Ich denke er meint sowas
Code: | if instr(Antworten,"Mist") andalso instr(Antworten,"Müll") then
Print "Das ist Mist und Müll"
|
Grüße
Rainer |
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 01.12.2014, 08:06 Titel: |
|
|
@RWK: genau das suche ich !
danke für eure hilfe !
hab das jetzt wie folgt hier stehen, erhalte aber eine Fehlermeldung:
Code: | #Include "windows.bi"
'### Deklaration der Wörter
Dim Antworten as String
'### Definition der einzelnen Wörter
Antworten = "hallo"
'### SchleifenAnfang
Do
'### INPUT Anfang
input "Fragmich: ", Antworten
'### Sortierung nach den Wörtern und deren Ausgabe
If InStr (Antworten, "hallo")
print "Du hast also hallo geschrieben"
If InStr (Antworten, "Mist")
Print "Wieso soll dein Passwort Mist sein?"
If InStr (Antworten,"Mist") andalso instr(Antworten,"Müll")Then
Print "Das ist Mist und Müll"
'### Schleifenstart
Loop |
Fehlermeldung:
Code: | test1.bas(25) error 31: Expected 'THEN' in 'If InStr (Antworten, "Mist")'
test1.bas(33) error 32: Expected 'END IF', found 'Loop' in 'Loop'
test1.bas(33) error 32: Expected 'END IF' in 'Loop'
Build error(s) |
Hat das vielleicht etwas damit zu tin, das ich das in FreeBasic und nicht mit QuickBasic schreibe ? Wo liegt der Unterschied ?
Wär es in QuickBasic einfacher ?
Villeicht so ?
Code: | '### Deklaration der Wörter
Dim as String eingabe, ausgabe
'### INPUT Anfang
input "Fragmich: ";eingabe
'### Sortierung nach den Wörtern und deren Ausgabe
If InStr (eingabe, "hallo")Then
ausgabe = "Du hast also hallo geschrieben"
If InStr (eingabe, "Mist") then
ausgabe = "Wieso soll dein Passwort Mist sein?"
If InStr (eingabe,"Mist") andalso instr(eingabe,"Müll")Then
ausgabe = "Das ist Mist und Müll"
Else
ausgabe = "Keine Antwort vorhanden !"
EndIf
Print ausgabe
Sleep |
Dann kommt aber:
Code: | Build error(s)
C:\Users\3rdm\Desktop\FreeBASIC\FbEdit\..\fbc -s console "test1.bas"
test1.bas(22) error 32: Expected 'END IF' in 'Sleep'
Build error(s) |
|
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 01.12.2014, 20:24 Titel: |
|
|
Ganz einfach: deine Syntax ist falsch. Es gibt entweder
(in einer Zeile)
oder
Code: | IF .. THEN
...
(ELSEIF .. THEN
...)
(ELSE
...)
END IF | (mehrere Zeilen, die geklammterten Blöcke sind optional) _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
kay2016
Anmeldungsdatum: 22.11.2014 Beiträge: 17
|
Verfasst am: 01.12.2014, 20:41 Titel: |
|
|
Okay, das scheint soweit zu klappen
Code: | '### Deklaration der Wörter
Dim as String eingabe, ausgabe
'### INPUT Anfang
Input "Fragmich: ";eingabe
'### Sortierung nach den Wörtern und deren Ausgabe
If InStr (eingabe, "hallo")Then
Print "Du hast also hallo geschrieben"
ElseIf InStr (eingabe, "Mist") then
Print "Wieso soll dein Passwort Mist sein?"
ElseIf InStr (eingabe,"Mist") Andalso instr(eingabe,"Müll") Then
Print "Das ist Mist und Müll"
Else Print "test"
Endif
Sleep |
Aber die Abfrage zu Mist und Müll klappt noch nicht.
habs zusammengeschrieben MistMüll - auseinander Mist Müll aber nix.
es kommt die Ausgabe zu "Mist". |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 01.12.2014, 22:55 Titel: |
|
|
kay2016 hat Folgendes geschrieben: | Aber die Abfrage zu Mist und Müll klappt noch nicht. [..] es kommt die Ausgabe zu "Mist". | Ja selbstverständlich - nachdem die Menge der Fälle für die verschiedenen Zweige nicht disjunkt ist ist die Reihenfolge relevant! _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|