Größe der Console
- EgonEprom
- Beiträge: 24
- Registriert: 15.02.2010 18:18
- Computerausstattung: Windows2000-XP-Vista-7
- Wohnort: Saarwellingen
Größe der Console
Kann die Größe der Console (Zeichen x Zeilen im Buffer, nicht die Fenstergröße) irgendwie eingestellt werden?
Oder wie kann ich erfahren, wie groß die Console ist
Ich benötige eine 80x25 bzw. 80x50 Teichen-Console für ein Terminal-Programm, ein öffnen im "Vollbild-Modus" also maximale Fenstergröße/ohne Slider wäre dann echt genial.
mfg egon
Oder wie kann ich erfahren, wie groß die Console ist
Ich benötige eine 80x25 bzw. 80x50 Teichen-Console für ein Terminal-Programm, ein öffnen im "Vollbild-Modus" also maximale Fenstergröße/ohne Slider wäre dann echt genial.
mfg egon
Wer offen für alles ist - ist nicht ganz dicht ?
Re: Größe der Console
Das Ermitteln der Informationen deiner Konsole: http://www.rsbasic.q-soft.ch/index.php? ... &Itemid=59
Das Ändern höchstens so: http://www.purebasic.fr/german/viewtopi ... 63#p132363
Aber sonst kA, sry^^
Vollbild: http://www.rsbasic.q-soft.ch/index.php? ... &Itemid=59
Klappt aber nicht bei Windows 7, wurde abgeschafft. (Bei mir jedenfalls
)
Das Ändern höchstens so: http://www.purebasic.fr/german/viewtopi ... 63#p132363
Aber sonst kA, sry^^
Vollbild: http://www.rsbasic.q-soft.ch/index.php? ... &Itemid=59
Klappt aber nicht bei Windows 7, wurde abgeschafft. (Bei mir jedenfalls

- EgonEprom
- Beiträge: 24
- Registriert: 15.02.2010 18:18
- Computerausstattung: Windows2000-XP-Vista-7
- Wohnort: Saarwellingen
Re: Größe der Console
Zwischenzeitlich habe ich festgestellt, daß "meine Console" 80 Zeichen x 300 Zeilen groß ist, wovon die ersten 25 Zeilen im Fenster direkt angezeigt werden. Mit dem anderen Link (Verändern der Größe) kann nur das darstellende Fenster verändert werden - bis zur maximalen Textbuffergröße (=> max 80 Zeichen) bzw. Bildschirmgröße (bei mir z. Zt. ca. 97 Zeilen)
Wenn ich jetzt den Textbuffer auf 50 Zeilen stutzen könnte, würde mir dieser zweite Link helfen, das Fenster auf volle größe zu bringen.
Aus den MSN-Infos habe ich entnommen, daß der Textbuffer jedoch nur größer zu machen geht !?!
In wie weit mache ich mich mit solchen Eingriffen plattformabhängig ?
mfg egon
Wenn ich jetzt den Textbuffer auf 50 Zeilen stutzen könnte, würde mir dieser zweite Link helfen, das Fenster auf volle größe zu bringen.
Aus den MSN-Infos habe ich entnommen, daß der Textbuffer jedoch nur größer zu machen geht !?!
In wie weit mache ich mich mit solchen Eingriffen plattformabhängig ?
mfg egon
Wer offen für alles ist - ist nicht ganz dicht ?
Re: Größe der Console
Erstmal Herzlich Willkommen im Forum
Ich glaube hiermit: http://www.purearea.net/pb/CodeArchiv/I ... onsole.pbi
Da gibt es glaube ich eine Procedure, mit der du die Buffergröße der Konsole ändern kannst.
\\Edit:
Hab grad genauer angeschaut.
Da kannst du nur die Buffergröße der Zeichehn ändern, aber nicht die Konsole selber.
Vielleicht kennt sich hier jemand mehr aus.

Ich glaube hiermit: http://www.purearea.net/pb/CodeArchiv/I ... onsole.pbi
Da gibt es glaube ich eine Procedure, mit der du die Buffergröße der Konsole ändern kannst.
\\Edit:
Hab grad genauer angeschaut.
Da kannst du nur die Buffergröße der Zeichehn ändern, aber nicht die Konsole selber.
Vielleicht kennt sich hier jemand mehr aus.
- EgonEprom
- Beiträge: 24
- Registriert: 15.02.2010 18:18
- Computerausstattung: Windows2000-XP-Vista-7
- Wohnort: Saarwellingen
Re: Größe der Console
Hab's jetzt wohl raus:
Sieht ganz gus aus bis jetzt, ist nur noch nicht grüdlich getestet (nur Win2KSP4).
Und schon taucht das nächste Problem auf: Anstatt daß ein eingetipptes Ctrl-C von 'meinem' Program verarbeitet wird, schießt eben dieses die Konsole gänzlich ab (lästg) !
Ist für dieses Problem evtl. schon eine Lösung bekannt?
(Oder hätte ich dadraus ein neues Thema machen sollen?)
Code: Alles auswählen
Procedure ConsoleInit(xch.l,ych.l)
Define gStdOut.l
Define consoleInfo.CONSOLE_SCREEN_BUFFER_INFO
Define rect.SMALL_RECT
If OpenConsole()
EnableGraphicalConsole(1)
ConsoleTitle("VT52")
If xch < $20 ; limit column range
xch = $20
ElseIf xch > $50
xch = $50
EndIf
If ych < $10 ; limit column range
ych = $10
ElseIf ych > $50
ych = $50
EndIf
gStdOut.l = GetStdHandle_(#STD_OUTPUT_HANDLE)
rect\right = xch - 1
rect\bottom = ych - 1
SetConsoleWindowInfo_(gStdOut, 1, @rect)
SetConsoleScreenBufferSize_(gStdOut, ych<<16 | xch)
Con = 1 ; console is running
Else
MessageRequester("VT52", "Console not availible")
EndIf
EndProcedure
Und schon taucht das nächste Problem auf: Anstatt daß ein eingetipptes Ctrl-C von 'meinem' Program verarbeitet wird, schießt eben dieses die Konsole gänzlich ab (lästg) !
Ist für dieses Problem evtl. schon eine Lösung bekannt?
(Oder hätte ich dadraus ein neues Thema machen sollen?)
- Mok
- BotHunter
- Beiträge: 1484
- Registriert: 26.12.2005 14:14
- Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit - Wohnort:
Re: Größe der Console
Kann man in der Konsole überhaup sachen abfragen, die nicht über Input() eingelesen werden?EgonEprom hat geschrieben:Anstatt daß ein eingetipptes Ctrl-C von 'meinem' Program verarbeitet wird, schießt eben dieses die Konsole gänzlich ab (lästg) !

Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Re: Größe der Console
It's not a bug, it's a feature.EgonEprom hat geschrieben:Und schon taucht das nächste Problem auf: Anstatt daß ein eingetipptes Ctrl-C von 'meinem' Program verarbeitet wird, schießt eben dieses die Konsole gänzlich ab (lästg) !
Ist für dieses Problem evtl. schon eine Lösung bekannt?
Es ist halt so, dass Strg+C auf Consolen das laufende Programm beendet. Unter UNIX wird an das Programm da noch ein entsprechendes Signal gesendet, das vom Programm abgefangen werden kann, um das Beenden zu verhindern. Wie es unter Windows ist, weiß ich nicht.
Es ist nur kein Problem, sondern eben ein Feature.

- EgonEprom
- Beiträge: 24
- Registriert: 15.02.2010 18:18
- Computerausstattung: Windows2000-XP-Vista-7
- Wohnort: Saarwellingen
Re: Größe der Console / Ausklang
Nach noch einigen Experimenten konnte ich das Konsolen-Projekt zu einem brauchbaren Abschluß bringen: Die Größe wird bei der Initialisierung als Parameter übergeben und die diversen Control-Signale werden brauchbar verarbeitet:
zuerst den Ctrl-Handler definieren ( da gibt's 5 verschiedene signale: 0 = ^C, 1= Ctrl-Break,
3,4 und 5 sind CloseWindow, Logoff und Shutdown)
Der CtrlHandler muß mit einem TRUE verlassen werden, damit die Control-Signale nicht noch weiter ausgewertet werden ( Dann würde Ctrl-C doch noch die Konsole abschießen)
Nun die Initialisierung:
Das öffnet eine Konsole, stellt die Buffergröße und - soweit möglich - das darstellende Fenster auf die gewünschte Größe (der zulässige Wertebereich wird von mir mit der Prozeduer "Range(wert,min,max) begrenzt) eingestellt. Abschließend wird noch der ControlHandler verbogen.
Zum Programm im Ganzen: es ist ein einfaches "Satellitenterminal", welches dem Zielsystem (ursprünglich: 65C02 mit 160KB(!) Ram) über die serielle Schnittstelle einen Massenspeicher zur Verfügung stellt und an sonsten ein irgendwie VT52-kompatibles "farbtaugliches" Terminal darstellt, welches alles, was vom Zielsystem zur Anzeige gebracht werden soll, auch noch mitprotokolliert. (Falls das noch jemand gebrauchen kann, bitte bei mir melden)
zuerst den Ctrl-Handler definieren ( da gibt's 5 verschiedene signale: 0 = ^C, 1= Ctrl-Break,
3,4 und 5 sind CloseWindow, Logoff und Shutdown)
Code: Alles auswählen
Procedure CtrlHandler(fdwCtrlType.l)
Select fdwCtrlType
Case 0 ; Ctrl-C
Send($03)
Case 1 ; Ctrl-Break
; MessageRequester("VT52", "Ctrl Break detected ?")
Default ; close-event, logoff, shutdown
run = 0 ; stop console
EndSelect
ProcedureReturn(-1) ; cancel ctrl-signal executing
EndProcedure
Nun die Initialisierung:
Code: Alles auswählen
Procedure ConsoleInit(xch.l,ych.l)
Define gStdOut.l
Define consoleInfo.CONSOLE_SCREEN_BUFFER_INFO
Define rect.SMALL_RECT
If OpenConsole()
EnableGraphicalConsole(1)
ConsoleTitle("VT52")
xch = range(xch, $20, $80)
ych = range(ych, $10, $50)
gStdOut.l = GetStdHandle_(#STD_OUTPUT_HANDLE)
rect\right = xch - 1
rect\bottom = ych - 1
SetConsoleWindowInfo_(gStdOut, 1, @rect)
SetConsoleScreenBufferSize_(gStdOut, ych<<16 | xch)
SetConsoleWindowInfo_(gStdOut, 1, @rect)
SetConsoleCtrlHandler_(@CtrlHandler(),-1)
Con = 1 ; console is running
Else
MessageRequester("VT52", "Console not availible")
EndIf
EndProcedure
Das öffnet eine Konsole, stellt die Buffergröße und - soweit möglich - das darstellende Fenster auf die gewünschte Größe (der zulässige Wertebereich wird von mir mit der Prozeduer "Range(wert,min,max) begrenzt) eingestellt. Abschließend wird noch der ControlHandler verbogen.
Zum Programm im Ganzen: es ist ein einfaches "Satellitenterminal", welches dem Zielsystem (ursprünglich: 65C02 mit 160KB(!) Ram) über die serielle Schnittstelle einen Massenspeicher zur Verfügung stellt und an sonsten ein irgendwie VT52-kompatibles "farbtaugliches" Terminal darstellt, welches alles, was vom Zielsystem zur Anzeige gebracht werden soll, auch noch mitprotokolliert. (Falls das noch jemand gebrauchen kann, bitte bei mir melden)