Vertikales Text scrolling... Wie gehts?
Übersicht

![]() |
ProducerBetreff: Vertikales Text scrolling... Wie gehts? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo erstmal,
Ich habe ich zwar B+ aber weil ich keine GUI Fkt. in meinem Problem benutze glaube ich passt es besser hier rein... Und zwar schreibe ich grade für ein Netzwerk-Programm eine Art Konsole(ihr wisst was ich meine - sowas wie die Eingabeaufforderung cmd) Auf der soll z.B. angezeigt werden wenn jmd online kommt oder eine Nachricht schreibt etc. Das funktioniert auch problemlos, nur verwende ich ein Fenster mit 640*480px (12px Zeilenabstand macht also ca 36 Zeilen) und wenn immer mehr Messages angezeigt werden wird das Fenster ja halt schnell mit Text voll... Das Problem ist das dann natürlich nichts mehr unter den Text geschrieben wird(ich hoffe ihr wisst was ich meine ![]() Also hatte ich mir überlegt diese Zeilen die angezeigt werden sollen in eine Datei zu schreiben und wenn es mehr werden halt die oberste zu löschen...(und dann halt nach 'clrscr;' alles neu zu zeichnen...) Das ganze ist aber komplizierter weil ich ja nichtgenau die Bytewerte kenne die eine Zeile lang ist (geht also nicht mit 'fseek()' oder wie das bei BB heißt) Ich hoffe ihr könnt mir irgendwie helfen und versteht man Problem ![]() Wichtig ist vllcht noch das das Fenster in dem es ist ein Canvas Gadget verwendet... Also wie fast wie BB2D und nicht sone Textarea von B+ Achja hier mal der Quelltext der betreffenden Funktion den ich leider schon recht enstellt hab mit meinen versuchen ![]() Code: [AUSKLAPPEN] Function message(mstring$,farbe=0)
Local tempmessages = OpenFile(CurrentDir()+"\tmp\messages.tmp") While Not Eof(tempmessages) ReadLine(tempmessages) Wend WriteLine(tempmessages,mstring$) WriteLine(tempmessages,farbe) CloseFile (tempmessages) Select (farbe) Case 0 Color 255,255,255 Case 1 Color 255,0,0 Case 2 Color 0,255,0 Case 3 Color 0,0,255 Default Color 255,255,255 End Select Text 0, texty*12, mstring$ If texty <36 Then texty=texty+1 Else Cls tempmessages = OpenFile(CurrentDir()+"\tmp\messages.tmp") Local tempmessagesbackup = WriteFile(CurrentDir()+"\tmp\messages.tmp.backup") ReadLine(tempmessages) ReadLine(tempmessages) While Not Eof(tempmessages) WriteLine(tempmessagesbackup,ReadLine(tempmessages)) Wend CloseFile(tempmessages) CloseFile(tempmessagesbackup) DeleteFile CurrentDir()+"\tmp\messages.tmp" CopyFile CurrentDir()+"\tmp\messages.tmp.backup",CurrentDir()+"\tmp\messages.tmp" DeleteFile CurrentDir()+"\tmp\messages.tmp.backup" texty=0 tempmessages = OpenFile(CurrentDir()+"\tmp\messages.tmp") While Not Eof(tempmessages) farbe=ReadLine(tempmessages) mstring$=ReadLine(tempmessages) Select (farbe) Case 0 Color 255,255,255 Case 1 Color 255,0,0 Case 2 Color 0,255,0 Case 3 Color 0,0,255 Default Color 255,255,255 End Select Text 0, texty*12, mstring$ texty=texty+1 Wend texty=texty-1 CloseFile(tempmessages) EndIf End Function Ich hab schon viel versucht wie ihr seht ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Speicher die Eingaben in einem String-array (oder in einem passenden Type). Das Array wird der Reihe nach befüllt. Nun gibt es 2 Möglichkeiten:
Sobald alle zeilen befüllt sind kopierst Du die Strings immer ins vorhergehende Feld ODER Du machst dein Array sagen wir doppelt so groß wie die Zeilenanzahl und befüllst es durchlaufend, d.h. wenn der letzte Eintrag erreicht ist wird von vorne angefangen. Zeitgleich lässt Du einen Counter mitlaufen der Speichert ab welchem index ausgegeben werden muss. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Producer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Danke für die schnelle Hilfe...
Ich hoffe nur das der Stringarray der dann ja 36 bzw. 72 Elemente hat den RAM oder CPU nicht zuviel belastet... Aber das müsste doch minimal sein oder? ... irgendwas geht nicht... Deklariere ich den Array in main als Global dann sagt er 'Variable Type missmatch', deklariere ich den Array in meiner Prozedur als Lokal so sagt der Compiler 'Variable must be a Blitz array' ![]() Hier nochmal der jetzige Code Code: [AUSKLAPPEN] Function message(mstring$,farbe=0)
Select (farbe) Case 0 Color 255,255,255 Case 1 Color 255,0,0 Case 2 Color 0,255,0 Case 3 Color 0,0,255 Default Color 255,255,255 End Select Text 0, texty*12, mstring$ If texty <36 Then nachrichtenarray$[texty]=mstring$ texty=texty+1 Else Cls For i=1 To 35 nachrichtenarray$[texty-i]=nachrichtenarray$[texty] Next EndIf End Function Den Fehler scheint er gleich bei der ersten Verwendung von dem Array in der Funktion zu vermuten Code: [AUSKLAPPEN] nachrichtenarray$[texty]=mstring$
in meinem Hauptprogramm habe ich übrigens das ganze so deklariert Code: [AUSKLAPPEN] Global nachrichtenarray$[36]
|
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei einem Blitz Array nur beim erstellen die Art deklarieren (% # $)
danach nicht mehr! Code: [AUSKLAPPEN] ;falsch nachrichtenarray$[texty]=mstring$ ;richtig nachrichtenarray[texty]=mstring$ Aber warum muß es unbedingt ein BlitzAarry sein? |
||
[BB2D | BB3D | BB+]
|
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau! das würde ich nur für Types nehmen!
Ein "normales" Array tuts doch auch! |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
Producer |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ Rallimen: Danke für den Tip, das wusst ich leider nicht...
@Tankbuster: Srry wenn ich frage, aber wie deklariert man einen normalen Array in BB? Ich dachte da gäbe es nur den Blitzarray... Und was hat ein normaler Array für Vorteile? Auf jeden Fall funktioniert das jetzt endlich das scrolling... Danke nochmal an alle ![]() |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also.. du kannst es Mit
Zitat: Dim Variable(3)
Erstellen! Die "normalen" Arrays sind immer Global! und du kannst auch leicht 3-Dimensionale Arrays machen, indem du schreibst! Zitat: Dim Variable(3,3)
ich hoffe dir ist klar, wofür die 3 steht^^ |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
Producer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aso, Dim-Felder^^
ja ist klar... dachte ihr meintet noch andere Arrays ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group