nochmal Konsole & Umlaute

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

nochmal Konsole & Umlaute

Beitrag von Ironsmurf »

Ich möchte eine Datenbank entwickeln und das aber als Konsolen-Programm,
da ich als Anfänger mit dessen programmierung besser klar komme.
Nun die Darstelltung der Umlaute ist schon möglich, leider weiß ich nicht wie ich die Eingabe auch für Umlaute vorbereite.

Code: Alles auswählen

Procedure print_s(text.s)
CharToOem_(text.s,text.s)
PrintN( text.s)
EndProcedure

OpenConsole()
Dim Movies.s(100)                 

Movies(   0) = "James Bond - 007 - Die Welt ist nicht genug"         
Movies(   1) = "James Bond - 007 - In tödlicher Mission"               
Movies(   2) = "James Bond - 007 - Octopussy"             
Movies(   3) = "James Bond - 007 - Sag niemals nie"           
Movies(   4) = "James Bond - 007 - Stirb an einem anderen Tag"
Movies(   5) = "American Pie 1"
Movies(   6) = "7 Zwerge - Männer allein im Wald"
Movies(   7) = "666 - Trau keinem mit dem Du schläfst"
Movies(   8) = "1492 - Eroberung des Paradieses"


Eingabe$ = Input()

PrintN("")
SortArray (Movies(),2)

For Index.b = 0 To 100
 film$ = movies.s(index)
 If FindString (LCase(film$),LCase(Eingabe$),1)
   Print_s(film$)
 EndIf
Next
Input()   
CloseConsole() 

Für einen guten Rat wäre ich dankbar
Es kommt immer auf die Sichtweise des Betrachters an.
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Beitrag von Ironsmurf »

PS: Es geht mir darum das bei der Filmsuche, auch Umlaute genommen werden, z.B. tödlich oder männer.
Es kommt immer auf die Sichtweise des Betrachters an.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Das gegenstück von CharToOem_( ist OemToChar_(
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Beitrag von Ironsmurf »

Ist richtig, aber irgenwo hatte ich einen Fehler, den beim Input Befehl stieg er immer aus
Es kommt immer auf die Sichtweise des Betrachters an.
Benutzeravatar
KeyKon
Beiträge: 1412
Registriert: 10.09.2004 20:51
Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit)
Wohnort: Ansbach
Kontaktdaten:

Beitrag von KeyKon »

So funktionierts doch:

Code: Alles auswählen

Eingabe$ = Input()
OemToChar_(Eingabe$,Eingabe$)
KeyKon
(\/) (°,,,°) (\/)
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Beitrag von Ironsmurf »

Leider immer noch nicht

Code: Alles auswählen

Procedure print_s(text.s)
CharToOem_(text.s,text.s)
PrintN( text.s)
EndProcedure

Procedure Eingabe_s(Input)
OemToChar_(Eingabe_s,Eingabe_s)
Eingabe_s = Input()
EndProcedure

;Globaliere String$ 
Global Ausgabe$ 
Procedure String(text$) 
  If FindString(Ausgabe$, text$, 1) 
    ProcedureReturn 1 
  Else 
    ProcedureReturn 0 
  EndIf
EndProcedure

Dim Movies.s(10)                 
Movies(   0) = "James Bond - 007 - Die Welt ist nicht genug"         
Movies(   1) = "James Bond - 007 - In tödlicher Mission"               
Movies(   2) = "James Bond - 007 - Octopussy"             
Movies(   3) = "James Bond - 007 - Sag niemals nie"           
Movies(   4) = "James Bond - 007 - Stirb an einem anderen Tag"
Movies(   5) = "American Pie 1"
Movies(   6) = "7 Zwerge - Männer allein im Wald"
Movies(   7) = "666 - Trau keinem mit dem Du schläfst"
Movies(   8) = "1492 - Eroberung des Paradieses"

Dim Stars.s(10)
Stars(   0) = "Roger Moore"
Stars(   1) = "Maud Adams"
Stars(   2) = "Louis Jourdan"
Stars(   3) = "Steven Berkoff"
Stars(   4) = "Desmond Llewelyn"
Stars(   5) = "Lois Maxwell"
Stars(   6) = "Walter Gotell"

OpenConsole()
Repeat
PrintN("")
ConsoleColor(13,0)

Eingabe$ = Input()
PrintN("")
SortArray (Movies(),2)
For Index.b = 0 To 10
ConsoleColor(15,0)
 film$ = movies.s(index)
 If FindString (LCase(film$),LCase(Eingabe$),1)
   Print_s(film$)
 EndIf
Next

SortArray (Stars(),2)
For Index.b = 0 To 10
ConsoleColor(10,0)
 film$ = Stars.s(index)
 If FindString (LCase(film$),LCase(Eingabe$),1)
   Print_s(film$)
 EndIf
Next

ForEver
CloseConsole() 

Habe es noch mal versucht.
Verzeihung, aber manchmal sieht man den Wald vor lauter Bäumen nicht,
Entschuldigung.
Es kommt immer auf die Sichtweise des Betrachters an.
Jake
Beiträge: 121
Registriert: 28.05.2005 04:10
Wohnort: Berlin

Beitrag von Jake »

Code: Alles auswählen

Procedure print_s(text.s)
CharToOem_(text.s,text.s)
PrintN( text.s)
EndProcedure

;Globaliere String$
Global Ausgabe$
Procedure String(text$)
  If FindString(Ausgabe$, text$, 1)
    ProcedureReturn 1
  Else
    ProcedureReturn 0
  EndIf
EndProcedure

Dim Movies.s(10)                 
Movies(   0) = "James Bond - 007 - Die Welt ist nicht genug"         
Movies(   1) = "James Bond - 007 - In tödlicher Mission"               
Movies(   2) = "James Bond - 007 - Octopussy"             
Movies(   3) = "James Bond - 007 - Sag niemals nie"           
Movies(   4) = "James Bond - 007 - Stirb an einem anderen Tag"
Movies(   5) = "American Pie 1"
Movies(   6) = "7 Zwerge - Männer allein im Wald"
Movies(   7) = "666 - Trau keinem mit dem Du schläfst"
Movies(   8) = "1492 - Eroberung des Paradieses"

Dim Stars.s(10)
Stars(   0) = "Roger Moore"
Stars(   1) = "Maud Adams"
Stars(   2) = "Louis Jourdan"
Stars(   3) = "Steven Berkoff"
Stars(   4) = "Desmond Llewelyn"
Stars(   5) = "Lois Maxwell"
Stars(   6) = "Walter Gotell"

OpenConsole()
Repeat
PrintN("")
ConsoleColor(13,0)

Eingabe$ = Input()
OemToChar_(Eingabe$,Eingabe$)
PrintN("")
SortArray (Movies(),2)
For Index.b = 0 To 10
ConsoleColor(15,0)
 film$ = movies.s(index)
 If FindString (LCase(film$),LCase(Eingabe$),1)
   Print_s(film$)
 EndIf
Next

SortArray (Stars(),2)
For Index.b = 0 To 10
ConsoleColor(10,0)
 film$ = Stars.s(index)
 If FindString (LCase(film$),LCase(Eingabe$),1)
   Print_s(film$)
 EndIf
Next

ForEver
CloseConsole()
Was du mit der Procedure Eingabe_s erreichen wolltest ist mir nicht ganz klar. Auf jeden Fall muß dort nicht [c]OemToChar_(Eingabe_s, Eingabe_s)[/c] stehen sonder die Variable in der du die eingabe ablegst, also [c]OemToChar_(Eingabe$, Eingabe$)[/c].
Habe die Procedure mal rausgenommen und es nach unten verschoben.
MfG Jake
Benutzeravatar
Ironsmurf
Beiträge: 111
Registriert: 04.01.2006 12:57
Computerausstattung: AMD FX(tm)-6300 Six-Core Processor
3.50 GHz / 8 GB Ram
Windows 7 / 64bit / Ultimate
Purebasic 5.20 LTS (Windows - x86)
Wohnort: Deutschland

Beitrag von Ironsmurf »

Vielen herzlichen Dank dafür ! ! !
Als Anfänger ist es manchmal nicht ganz einfach.
Es kommt immer auf die Sichtweise des Betrachters an.
Antworten