Konsolenanwendung

Für allgemeine Fragen zur Programmierung mit PureBasic.
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Konsolenanwendung

Beitrag von Zero_Cool »

Hallo

Ich habe ein zwei Fragen betreff Konsolenanwendungen. Habe mir die Hilfedatei angesehen leider konnte ich die Probleme nicht lösen.

- Wie kann ich in einer Konsolenanwendung einen Zeile nach unten springen? ( Das gleiche wie wenn man Enter drückt ) Es steht ein Text, und eine Zeile darunter steht wieder ein Text. Leider ist bei mir der Text immer auf der selben Zeile. HAbe es mit "CR" versucht scheint aber in PureBasi nicht verwendbar zu sein.

- Wie kann ich den "name$=Input()" Befehl so definieren, das der geschriebe Text in einer Konsolenanwendung nur durch ***** ersetzt wird. ( Für Passwort )

- Ist es möglich Print Befehle in eine externe .txt Datei abzuspeichern? Also wenn ein Print Befehl kommt, wird er auch automatisch in die Datei gespeichert. So ähnlich wie bei Batch der *Echo Text >test.txt Befehl.

Danke und Gruss Phil
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

Re: Konsolenanwendung

Beitrag von ts-soft »

Zero_Cool hat geschrieben:Hallo

Ich habe ein zwei Fragen betreff Konsolenanwendungen. Habe mir die Hilfedatei angesehen leider konnte ich die Probleme nicht lösen.
Etwas genauer hättest ja gucken können :)
Zero_Cool hat geschrieben: - Wie kann ich in einer Konsolenanwendung einen Zeile nach unten springen? ( Das gleiche wie wenn man Enter drückt ) Es steht ein Text, und eine Zeile darunter steht wieder ein Text. Leider ist bei mir der Text immer auf der selben Zeile. HAbe es mit "CR" versucht scheint aber in PureBasi nicht verwendbar zu sein.
PrintN() schon probiert ?
Beispielcode:

Code: Alles auswählen

Procedure xPrint ( Text.s )
  CharToOem_ ( Text, Text )
  Print ( Text )
EndProcedure

OpenConsole ()
ConsoleTitle ( "ButterFly" )
ConsoleColor ( 14, 0)
ConsoleLocate ( 0, 5 )
PrintN ( "                / `._     .       .      _.' \ " )
PrintN ( "              '.@ = `.     \     /     .' = @.'" )
PrintN ( "               \ @`.@ `.    \   /    .' @.'@ / " )
PrintN ( "                \;`@`.@ `.   \ /   .' @.'@`;/  " )
PrintN ( "                 \`.@ `.@ `'.(*).'` @.' @.'/   " )
PrintN ( "                  \ '=._`. @ :=: @ .'_.=' /    " )
PrintN ( "                   \ @  '.'..'='..'.'  @ /     " )
PrintN ( "                    \_@_.==.: = :.==._@_/      " )
PrintN ( "                    /  @ @_.: = :._@ @  \      " )
PrintN ( "                   /@ _.-'  : = :  '-._ @\     " )
PrintN ( "                  /`'@ @ .-': = :'-.@ @`'`\    " )
PrintN ( "                  \.@_.=` .-: = :-. `=._@./    " )
PrintN ( "                    \._.-'   '.'   '-._./      " )
ConsoleColor ( 10, 0)
ConsoleLocate ( 15, 22 )
xPrint ( "Drücken Sie Return zum Beenden " )
Input ()
CloseConsole ()
für den Rest sehe Dir die FileLibrary an und falls du nicht klarkommst frag nochmal gezielt

gruß
Thomas
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
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Für die Passworteingabe habe ich mal eine Procedure geschrieben:
http://forums.purebasic.com/german/viewtopic.php?t=1297
Und eine andere Funktion um colierten Text dar zu stellen:

Code: Alles auswählen

Procedure CPrint(strText.s, bolHead.b)
    DefType.l lngI, lngColor
    DefType.s strChar
    
    CharToOEM_(@strText, @strText)
    If bolHead = #True: CPrint("^8> ", #False): ConsoleColor(7, 0): EndIf
    For lngI = 1 To Len(strText)
        strChar = Mid(strText, lngI, 1)
        If strChar = "^" 
            lngI + 1
            Select UCase(Mid(strText, lngI, 1))
                Case "0": lngColor = $0  ; 0   Schwarz -_-
                Case "1": lngColor = $1  ; 1   Blau
                Case "2": lngColor = $2  ; 2   Grün
                Case "3": lngColor = $3  ; 3   Türkis
                Case "4": lngColor = $4  ; 4   Rot
                Case "5": lngColor = $5  ; 5   Magenta
                Case "6": lngColor = $6  ; 6   Braun
                Case "7": lngColor = $7  ; 7   Hellgrau (Std.)
                Case "8": lngColor = $8  ; 8   Dunkelgrau
                Case "9": lngColor = $9  ; 9   Hellblau
                Case "A": lngColor = $A  ; 10  Hellgrün
                Case "B": lngColor = $B  ; 11  Cyan
                Case "C": lngColor = $C  ; 12  Hellrot
                Case "D": lngColor = $D  ; 13  Helles Magenta
                Case "E": lngColor = $E  ; 14  Gelb
                Case "F": lngColor = $F  ; 15  Weiß
                Default : Print(Mid(strText, lngI, 2))
            EndSelect
            
            ConsoleColor(lngColor, 0)
        ElseIf strChar = Chr(2)
            PrintN("")
        Else
            Print(strChar)
        EndIf
    Next
    ConsoleColor(7, 0)
EndProcedure
und hier eine kleine Demo:
[c] CPrint("Lese ^9Etwas^7 ein...", #True)
CPrint("^AOK" + #STX$, #False) [/c]

hätest selber alles gefunden, wenn du die Boardsuche etwas strapaziert hättest /:->. Die Prozeduren sind im übrigen von mir.
Bild
Antworten