Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Wörter Erkennung
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
kay2016



Anmeldungsdatum: 22.11.2014
Beiträge: 17

BeitragVerfasst am: 01.12.2014, 23:48    Titel: Antworten mit Zitat

und wie kann ich das trennen ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 02.12.2014, 04:08    Titel: Antworten mit Zitat

St_W hat Folgendes geschrieben:
Ja selbstverständlich - nachdem die Menge der Fälle für die verschiedenen Zweige nicht disjunkt ist ist die Reihenfolge relevant!
Und nicht nur das. Zum Einen ist das mit Umlauten so eine Sache bei Konsolenprogrammen, zum Anderen liefert die Instr - Funktion nicht TRUE oder FALSE zurück, sondern die Position des ersten Auftretens des Teilstrings. Und wenn du diese Werte mit AND verknüpfst, kann es passieren, daß dabei 0 (=FALSE) herauskommt, obwohl beide Werte <> 0 (=TRUE) sind.
Code:
#Include "windows.bi"
'### Deklaration der Wörter
Dim As String eingabe, ausgabe

'### INPUT Anfang
Input "Fragmich: ";eingabe
OemToChar(eingabe,eingabe)

? InStr(eingabe,"Mist")
? InStr(eingabe,"Müll")
?
? (InStr(eingabe,"Mist") <> 0)
? (InStr(eingabe,"Müll") <> 0)
?
? (InStr(eingabe,"Mist") <> 0) And (InStr(eingabe,"Müll") <> 0)
? InStr(eingabe,"Mist") And InStr(eingabe,"Müll")
?

'### Sortierung nach den Wörtern und deren Ausgabe
If InStr (eingabe, "hallo")Then
   Print "Du hast also hallo geschrieben"
ElseIf (InStr(eingabe,"Mist") <> 0) And (InStr(eingabe,"Müll") <> 0) Then
   Print "Das ist Mist und Müll"
ElseIf InStr (eingabe, "Mist") Then
   Print "Wieso soll dein Passwort Mist sein?"
Else Print "test"
EndIf

Sleep


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
kay2016



Anmeldungsdatum: 22.11.2014
Beiträge: 17

BeitragVerfasst am: 02.12.2014, 08:02    Titel: Antworten mit Zitat

was bedeuten die ? (vor den If Instr)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 02.12.2014, 08:37    Titel: Antworten mit Zitat

Du könntest es einfach ausprobieren und dabei feststellen, dass ? dasselbe wie PRINT tut. zwinkern
Um solche Fragen zu beantworten ist auch prima die Befehlsreferenz geeignet.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
kay2016



Anmeldungsdatum: 22.11.2014
Beiträge: 17

BeitragVerfasst am: 06.12.2014, 14:14    Titel: Antworten mit Zitat

Soweit sogut, das programm prüft nun an welchen Stellen die beiden Wörter vorkommen und gibt aus an welchen stellen diese vorkamen.

Die zweite und dritte Prüfung habe ich nicht verstanden.
Was machen diese und wie bekomme ich nun die Zahlen da weg ?

Vielen Dank schonmal bis hierher. lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4597
Wohnort: ~/

BeitragVerfasst am: 06.12.2014, 14:47    Titel: Antworten mit Zitat

Welche zweite und dritte Prüfung meinst du? Diese hier?
Code:
ElseIf (InStr(eingabe,"Mist") <> 0) And (InStr(eingabe,"Müll") <> 0) Then

AND arbeitet wie gesagt mit Bitvergleich. INSTR(eingabe, "Mist")<>0 gibt entweder -1 (true) zurück, wenn der Begriff gefunden wurde (also Fundstelle nicht 0) oder 0 (false), wenn nichts gefunden wurde. Nur die Werte 0 und -1 können mit AND sinnvoll zum logischen Vergleich herangezogen werden, da AND eben kein logischer, sondern ein Bit-Operator ist. Am besten liest du dir mal die entsprechenden Referenzartikel genau durch und probierst die Beispiele dazu aus; ich empfehle auch http://www.freebasic-portal.de/befehlsreferenz/bedingungsstrukturen-385.html

Zitat:
wie bekomme ich nun die Zahlen da weg ?

Ich habe eine Weile überlegt, was du wohl meinst - die Zeilen mit dem "?" am Anfang sind (PRINT-)Ausgabezeilen; wenn du diese Ausgabe nicht willst, musst du die Zeilen löschen. grinsen
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kay2016



Anmeldungsdatum: 22.11.2014
Beiträge: 17

BeitragVerfasst am: 06.12.2014, 21:02    Titel: Antworten mit Zitat

Danke für die Erklärung und den hilfreichen Link, das werde ich mir mal genauer durchlesen.
Das mit den Zahlen weglassen hat geklappt, danke auch dafürhappy
Leider hab ich beim OemToChar M³ll statt Müll stehen.
War das mein Fehler ?
Wie kann ich es fixen ?
Und ab wieviel MB wird FreeBasic lahm ?? grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4597
Wohnort: ~/

BeitragVerfasst am: 06.12.2014, 21:25    Titel: Antworten mit Zitat

kay2016 hat Folgendes geschrieben:
Und ab wieviel MB wird FreeBasic lahm ?? grinsen

Das hängt von deiner Art der Verarbeitung ab cool

Wenn deine IDE verschiedene Zeichenkodierungen unterstützt, kannst du den Quellcode in der Codierung der Eingabeaufforderung speichern. Besser ist wahrscheinlich, den ANSI-Code des Zeichens nachzuschauen und mit Escape-Sequenzen zu arbeiten.
Code:
print !"Alles M\129ll"
sleep

_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 07.12.2014, 09:41    Titel: Antworten mit Zitat

kay2016 hat Folgendes geschrieben:
Leider hab ich beim OemToChar M³ll statt Müll stehen.
Das Problem ist, daß FB die ASCII - Codierung verwendet, während die Ein- und Ausgabe der Konsole im ANSI - Code erfolgt. Wenn du also Konsoleneingaben mit Sonderzeichen in FB verarbeiten willst, mußt du sie zuvor mit OemToChar vom ANSI- ins ASCII - Format konvertieren. Umgekehrt müssen Ausgabetexte mit CharToOem ins ANSI - Format zurückverwandelt werden. Praktischerweise solltest du die Konvertierungen mit je einer Function erledigen:
Code:
#Include "windows.bi"
Declare Function ansi(text As String) As String
Declare Function ascii(text As String) As String

'### Deklaration der Wörter
Dim As String eingabe, ausgabe

'### INPUT Anfang
Input "Fragmich: ";eingabe
eingabe = ascii(eingabe)

'### Sortierung nach den Wörtern und deren Ausgabe
If InStr (eingabe, "hallo")Then
   ausgabe = "Du hast also hallo geschrieben"
ElseIf (InStr(eingabe,"Mist") <> 0) And (InStr(eingabe,"Müll") <> 0) Then
   ausgabe = "Das ist Mist und Müll"
ElseIf InStr (eingabe, "Mist") Then
   ausgabe = "Wieso soll dein Passwort Mist sein?"
Else
   ausgabe = "test"
EndIf
Print ansi(ausgabe)

Sleep

Function ansi(text As String) As String   'wandelt sonderzeichen vom ascii- ins ansi-format
   Dim As String t
   t = text
   CharToOem(t,t)
   Return t
End Function

Function ascii(text As String) As String   'wandelt sonderzeichen vom ansi- ins ascii-format
   Dim As String t
   t = text
   OemToChar(t,t)
   Return t
End Function
Oder du benutzt die von nemored erwähnten Escape-Sequenzen, was aber nur bei feststehenden Texten praktikabel ist.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
kay2016



Anmeldungsdatum: 22.11.2014
Beiträge: 17

BeitragVerfasst am: 07.12.2014, 11:39    Titel: Antworten mit Zitat

Wahnsinn. Es funktioniert so sehr gut und nach meinen Vorstellungen.

Vielen Dank an Euch, habt mir damit geholfen in einer Sprache zu "programmieren" (ich bin ja noch ein Anfänger), die ich am C64 schon sehr gut gefunden habe.
Vielleicht nicht ganz zeitgemäß, die Sprache (stimmt das ?) aber ich finde Sie einfach ehrwürdig und so als Hobby eine tolle Sache.

Wünsche Euch einen schönen Sonntag !!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4597
Wohnort: ~/

BeitragVerfasst am: 07.12.2014, 14:41    Titel: Antworten mit Zitat

Zitat:
Das Problem ist, daß FB die ASCII - Codierung verwendet

Auch FB verwendet ANSI (sonst könnte es ja mit Werten > 127 nichts anfangen), aber eine andere Codepage als die Konsole.

Seit dem C64 hat sich bei der Sprachfamilie BASIC eine ganze Menge getan; in FreeBASIC werden die strukturellen, prozeduralen und modularen Programmparadigmen umgesetzt, und auch objektorientierte Programmierung wird zu einem großen Teil unterstützt. Zusammen mit der Tatsache, dass es den Compiler nicht nur für Windows gibt, würde ich die Sprache durchaus noch als zeitgemäß betrachten. happy

Ungeachtet dessen gibt es natürlich immer Problemstellungen, die sich mit ganz bestimmten Sprachen besonders gut lösen lassen bzw. mit anderen Sprachen nur recht umständlich; dieses "Problem" haben aber alle Programmiersprachen.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1211
Wohnort: Ruhrpott

BeitragVerfasst am: 08.12.2014, 09:54    Titel: Antworten mit Zitat

nemored hat Folgendes geschrieben:
Auch FB verwendet ANSI
Du hast mal wieder Senkrecht. zwinkern Gibt es eigentlich eine Möglichkeit, die Codepage von FB zu ändern? Ich finde die Umwandelei nämlich ausgesprochen lästig.

kay2016 hat Folgendes geschrieben:
Vielleicht nicht ganz zeitgemäß, die Sprache (stimmt das ?)
Ich finde FB sogar sehr zeitgemäß, da es ständig weiterentwickelt und den neuen Erfordernissen und Möglichkeiten (z.B. 64 bit) angepasst wird. Und daß man (als Neueinsteiger) dabei auf altbekanntem aufbauen kann: um so besser! lächeln

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.12.2014, 10:30    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
nemored hat Folgendes geschrieben:
Auch FB verwendet ANSI
Du hast mal wieder Senkrecht. zwinkern Gibt es eigentlich eine Möglichkeit, die Codepage von FB zu ändern? Ich finde die Umwandelei nämlich ausgesprochen lästig.

Unter Windows z.B. so. FB selbst kennt zunächst mal keine ANSI-Codepages, das ist Sache des Empfängers.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
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.

 Impressum :: Datenschutz