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:

Bildschirmseiten in Screen 0

 
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
AQUA-MAN



Anmeldungsdatum: 26.03.2009
Beiträge: 15

BeitragVerfasst am: 25.06.2009, 02:47    Titel: Bildschirmseiten in Screen 0 Antworten mit Zitat

Hai Leute

Ich habe grade eben versucht im Screen 0 Modus 2 Bildschirmseiten zu benutzen, aber sobald das Programm die 2. Seite benutzen soll (Screenset 1,1), stürzt das Programm ab indem es einfach verschwindet.
Wenn ich aber das Screen 0,,2 z.B. zu Screen 19,,2 verändere funktioniert alles so wie es soll, aber eigentlich wollte ich im Textmodus arbeiten und nicht in einem Grafikmodus.
Daher nehme ich an das man in Screen 0 nur 1 Bildschirmseite benutzen kann, aber um ganz sicher zu gehen frage ich hier jetzt nochmal ob das richtig ist?

Bye
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 25.06.2009, 03:12    Titel: Antworten mit Zitat

"Screen 0" schaltet den Grafikmodus ab.

Code:

Screen 1 'Grafikmodus-1 einschalten
Screen 0 'Grafikmodus ausschalten

Screen 2 'Grafikmodus-2 einschalten
Screen 0 'Grafikmodus ausschalten

'...


Im Textmodus (reguläre Ausgabe auf einer Konsole) gibt es keien Bildschirmseiten. Du könntest höchstens noch "ViewPort" nutzen, sonst jedoch nichts.

Du musst dir da was anderes einfallen lassen, z.B. einen Doppelten Buffer erzeugen, in einem die aktuellen Informationen, und in einem die neuen Informationen. "Draw'st" du diese per eigener Sub / Function, kannst du beide 2 Dimmensionale Arrays miteinander vergleichen und nur die geänderten Informationen per Locate und Print übertragen. Das ganze läst sich noch optimieren, indem du z.B. nicht nur Byte für Byte änderungen durchführst, sondern zuvor prüfst, ob sich mehree änderungen hintereinander befinden, und diese dann über einen Print, anstat über mehrere durchführst. Führt auch zu einer drastischen Beschleunigung im Anzeigeverhalten.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AQUA-MAN



Anmeldungsdatum: 26.03.2009
Beiträge: 15

BeitragVerfasst am: 25.06.2009, 03:56    Titel: Antworten mit Zitat

Ich hätte wahrscheinlich besser noch angeben sollen, was ich mit den 2 Bildschirmseiten bezwecken wollte.
Ich hatte vor so eine art Hilfeseite auf die eine Seite zu machen, die man dann bei Bedarf einblenden kann und auch wieder ausblenden. Die Hilfeseite verändert sich auch nicht. Die Eingaben finden nur auf der anderen Bildschirmseite statt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 25.06.2009, 04:20    Titel: Antworten mit Zitat

Reden wir hier vom text- oder grafik-modus?


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AQUA-MAN



Anmeldungsdatum: 26.03.2009
Beiträge: 15

BeitragVerfasst am: 25.06.2009, 12:27    Titel: Antworten mit Zitat

Text-Modus, deswegen habe ich ja die Probleme mit der nicht vorhandenen 2. Bildschirmseite in Screen 0, oder gibt es auch einen Grafikmodus in Screen 0? Also bei mir ist zu mindestens alles nur Text.
OK, etwas ausführlicher: Ich hatte vor, am Anfang des Programms auf die nicht sichtbare Bildschirmseite einen Hilfetext zu schreiben, den man dann mitten im Programm anzeigen lassen kann, in dem das Programm sich die Aktuelle Cursorposition merkt und mit Screenset dann die Hilfeseite anzeigt. Nachdem der User fertig ist mit lesen und eine Taste gedrückt hat, sollte wieder auf den vorherigen Bildschirminhalt gewechselt und die Cursorposition wieder hergestellt werden.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.06.2009, 19:40    Titel: Antworten mit Zitat

funktioniert nur mit PCopy:
Code:
Dim a As Integer
'Screen 0,,2
Print "Hauptseite"
Print "wird gleich"
Print "auf Seite 2 kopiert."
PCopy 0,1
a = Locate
Sleep

Cls
Print "Neue Seite"
Sleep

PCopy 1,0
Locate LoWord( HiByte( a ) )
Color 4,15
Print "wieder Hauptseite"
Print "verdisch.."
Sleep


_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AQUA-MAN



Anmeldungsdatum: 26.03.2009
Beiträge: 15

BeitragVerfasst am: 25.06.2009, 20:26    Titel: Antworten mit Zitat

Vielen Lieben Dank

Funktioniert prächtig, und Locate hatte ich bisher immer nur als Anweisung und nicht als Funktion benutzt, dabei steht es in der Befehlsreferenz als Funktion genau eins drunter. mit dem Kopf durch die Mauer wollen
Ich hatte bisher die Position mit zwei Variablen gespeichert, eine für die Spalte und eine für die Zeile. Kopf schütteln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Luke



Anmeldungsdatum: 14.01.2009
Beiträge: 92
Wohnort: Ostfriesland !

BeitragVerfasst am: 20.07.2009, 16:29    Titel: Antworten mit Zitat

Wo wir schon bei dabei sind.
Es gibt in Screen 12 leider nur eine Bildschirmseite, aber ich bräuchte eine Zweite. mit den Augen rollen
Ich habe ämlich ein großes und Grafisch anspruchvolles Programm geschrieben und möchte eine flimmerfreie Ziemlich große Animation machen.
kann Man das Irgentwie Machen, Das man doch 2 Bildschirmseiten in Screen 12 Hat?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 20.07.2009, 16:35    Titel: Antworten mit Zitat

SCREENRES verwenden
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 21.07.2009, 02:22    Titel: Antworten mit Zitat

Luke hat Folgendes geschrieben:
Es gibt in Screen 12 leider nur eine Bildschirmseite...
wo hast du das her?

Probiere mal selbst
Code:
DIM a AS INTEGER
SCREEN 12,,2
PRINT "Hauptseite"
PRINT "wird gleich"
PRINT "auf Seite 2 kopiert."
PCOPY 0,1
a = LOCATE
SLEEP

CLS
PRINT "Neue Seite"
SLEEP

PCOPY 1,0
LOCATE LOWORD( HIBYTE( a ) )
COLOR 4,15
PRINT "wieder Hauptseite"
PRINT "verdisch.."
SLEEP

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 21.07.2009, 12:02    Titel: Antworten mit Zitat

@volta: Bei QBasic unter DOS mit VGA war das so:
Code:
VGA Screen Modes

The IBM Video Graphics Array (VGA) adapter offers significantly enhanced
text and graphics in all modes.

        Rows and  Color                           Page
  Mode  columns   attributes  Colors  Resolution  size  Pages
  ════   ════════   ══════════   ══════   ══════════   ════   ═════
  0     40x25     16          64      360x400           8
        40x43     16          64      320x350           8
        40x50     16          64      320x400           4
        80x25     16          64      720x400           8
        80x43     16          64      640x350           4
        80x43     16           3      720x350           4
        80x50     16          64      640x400           4
        80x50     16           3      720x400           4
  1     40x25      4          16      320x200     16K   1
  2     80x25      2          16      640x200     16K   1
  7     40x25     16          16      320x200     32K   (a)
  8     80x25     16          16      640x200     64K   (a)
  9     80x25     16          64      640x350     128K  (a)
        80x43     16          64      640x350     128K  (a)
 10     80x25      4           9      640x350     64K   (b)
        80x43      4           9      640x350     64K   (b)
 11     80x30      2         256      640x480     64K   1
        80x60      2         256      640x480     64K   1
 12     80x30     16         256      640x480     256K  1
        80x60     16         256      640x480     256K  1
 13     40x25    256         256      320x200     64K   1
───────────────────────────────────────────────────────────────────────
 (a)    Pages = Screen memory divided by page size. Eight page maximum.
 (b)    Pages = Screen memory divided by 2 divided by page size. Eight
                page maximum.

(Quelle: MS-QBX 7.1 Hilfe)
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 21.07.2009, 12:22    Titel: Antworten mit Zitat

Bei FB hast du aber den ganzen RAM für deine Seiten...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


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

BeitragVerfasst am: 21.07.2009, 18:09    Titel: Antworten mit Zitat

Es spricht aber trotzdem nix dagegen, SCREENRES zu verwenden, denn wer kann sich schon unter einer Anweisung wie "SCREEN 18" was vorstellen? ("Welche Auflösung war das noch mal?")
_________________
» 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
nemored



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

BeitragVerfasst am: 21.07.2009, 18:16    Titel: Antworten mit Zitat

Da ich ständig SCREEN 18 verwende (nur manchmal SCREEN 19), kann ich mir die zugehörige Auflösung schon merken. grinsen
Verwende ich aber nur aus Gewohnheit; wüsste tatsächlich nichts, was gegen SCREENRES spricht. SCREEN dient eigentlich nur noch der Abwärtskompatibilität.
_________________
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
Luke



Anmeldungsdatum: 14.01.2009
Beiträge: 92
Wohnort: Ostfriesland !

BeitragVerfasst am: 21.07.2009, 22:59    Titel: Antworten mit Zitat

Ich hab jetzt FB.
Hab nur Mega Viele Probleme Mit den Variablen
Die ganzen Dim shared Anweisungen sind Fehlerhaft und z.B DEFIINT A-Z
geht auch nicht.
Die Anweisungen gehören zum Maus treiber 'MOUSE' in QBMonFAQ. Damit kenn ich mich aber nicht aus.
Könnt ihr mir sagen wie ich aus diesem Variablen Schlamassel rauskommen kann.
Welche IDE für FB habt ihr denn? Gibts eine die zumindest fast GENAUSO funzt wie QB?
_______________________________________________________________
Warum ist das ein FB und QB Forum, wenn doch QB_Programme in FB garnicht funktionieren?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



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

BeitragVerfasst am: 22.07.2009, 00:24    Titel: Antworten mit Zitat

Die IDE wird dir bei den Variablen nicht helfen, weil das eine Compiler-Angelegenheit ist. Richtig, DEFxxx funktioniert nicht mehr, und du musst für jede deklarierte Variable explizit festlegen, was für ein Variablentyp es ist. Außerdem gibt es keine Suffixe (!, % usw.) mehr.

Unter FreeBASIC brauchst du aber keinen extra Maustreiber, da gibt es GETMOUSE.
_________________
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
Luke



Anmeldungsdatum: 14.01.2009
Beiträge: 92
Wohnort: Ostfriesland !

BeitragVerfasst am: 22.07.2009, 02:09    Titel: Antworten mit Zitat

Danke schön.
Das bringt mich auf alle Fälle weiter!
In FB fuxe ich mich jetzt erstmal rein und Probier mal ein bisschen.
Außerdem gibt es ja noch die Hilfe, und für spezielle Fragen ist ja schließlich dieses Forum da! grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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
Seite 1 von 1

 
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