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:

mid$/len$

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 21.05.2005, 15:00    Titel: mid$/len$ Antworten mit Zitat

Hallo
Ich habe mir dieses Programm geschrieben
Code:

SCREEN 12
CLS
FF = FREEFILE
X$ = "C:\let.txt"
OPEN X$ FOR INPUT AS #FF
DO UNTIL EOF(1)
LINE INPUT #FF, TEXT$
PRINT TEXT$
LOOP
CLOSE #FF
FOR TEX = 1 TO LEN(TEXT$)
IF EING = 1 THEN END
EING = INP(&H60)
LET$ = MID$(TEXT$, TEX, 1)
LETP$ = MID$(TEXT$, TEX, 60)
LOCATE 10, 10: PRINT LETP$
T = TIMER
DO: LOOP UNTIL TIMER > T + .05
NEXT TEX


Ein paar Befehle machen jetzt noch keinen Sinn. Da kommt später noch was zu.
Also dieses Programm holt Text aus der Datei C:\let.txt und druckt ihn auf den Bildschirm von rechts nach links laufend, wobei ein Rand von 10Leertasten auf beiden Seiten ist.
Wenn ich das Programm im normalen Bildschirmmodus laufen lasse funktioniert es und hört am Ende auf. Sobald ich es aber im SCREEN 12 Modus laufen lasse wird der letzte Buchstabe des Textes durch die ganze Bildschirmseite geschrieben.
Sieht dann ca. so aus:
Hier sind Leertasten texttttttttttttttttttttttttttttttttttttttttttttttttttttt Hier sind Leertasten
Was ist daran falsch`?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Kai Bareis



Anmeldungsdatum: 10.09.2004
Beiträge: 545
Wohnort: Baden Würtemberg

BeitragVerfasst am: 21.05.2005, 15:06    Titel: Antworten mit Zitat

Du muss das letzte Zeichen vom Bildschirm wieder löschen was recht einfach ist.
Code:
LOCATE 10, 10: PRINT LETP$ ;" "

mit dem Leerzeichen hintendran wird dann der das letzte Zeichen weggelöscht
_________________
MfG Kai Bareis
Es ist noch kein Meister vom Himmel gefallen! Warum einfach wens auch umständlich geht!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 21.05.2005, 15:07    Titel: Antworten mit Zitat

Das wars. Danke.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 24.05.2005, 17:49    Titel: Antworten mit Zitat

Hallo
Nochmal hier weiter.
Der gleiche Code in etwa.
Jetzt will ich aber, dass er nach jeder Buchstabenauswertung in eine SUB geht und da einen Buchstaben auf den Bildschirm im SCREEN 12 Modus zeichnet(Noobmethode). Wenn ich aber in der Schleife LETP$ auswerte kommt nichts dabei raus.
Wo liegt jetzt schon wieder mein Fehler?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 25.05.2005, 15:55    Titel: Antworten mit Zitat

Hallo
Ich habs jetzt hinbekommen. Lag z.T. daran: W = W + 1:MID$(TEXT$, 1, W)
So funzt es jetzt.
Eine andere Frage:
Ich habe ja eine Zeitschleife eingebaut. Unter .05 sec wird diese aber nicht schneller.
Mein Programm greif jetzt bei jedem durchlauf auf eine untersub zu und malt einen Buchstaben(mit PSET/LINE) auf den Bildschirm.
Geht die Schleife bloß nicht schneller, weil ich PSET/LINE benutze und QB nicht schnell genug ist oder habe ich noch einen anderen Blocker im Programm?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 25.05.2005, 16:11    Titel: Antworten mit Zitat

Das Zauberwort heißt Optimierung zwinkern

Wenn ein Code funktioniert, kannst du ihn immer noch optimieren.
Diese Optimierung betrifft meist die Geschwindigkeit.

Ein Tip ist zum Beispiel ein
Code:

DEFINT A-Z

vor dem Programmstart.

Was für einen Grafikmodus benutzt du denn?
Bei SCREEN 13 ist es realtiv einfach, einen PSET-Ersatz zu schreiben, zu
den anderen Bildschirmmodi (wie z.B. SCREEN 7, 9 und 12), die aus Bitplanes
bestehen, findest du was auf dreaels Seite.

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 25.05.2005, 19:56    Titel: Antworten mit Zitat

solltest du die schleife mit TIMER gemacht haben, der löst nur bis zu einer achzehntel sekunde auf, ungefähr 52ms, schneller kanns damit also nicht werden. Aber ne Halbe sekunde ist doch etwas mehr.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 25.05.2005, 21:39    Titel: Antworten mit Zitat

oder man nimmt wait &H3DA. Das verwende ich sehr oft bei spielen.

Code:

'Das wäre jetzt eine warteschleife von ca. 1 sek. bei einer 'bildschirmwiederholfrequenz von 75

FOR warte%=1 to 75
   wait &h3DA,8
   wait &H3DA,8,8
NEXT warte%
' und das 1/75 sek.
wait &H3DA, 8
wait &H3DA, 8, 8


Da musst du nur aufpassen, dass du dich nicht vertippst. Ich hab mal ausversehen wait &HEDA ,8 eingegeben.mit dem Kopf durch die Mauer wollen Dann musste ich auf Reset drücken. Meine 1:30 h arbeit war hinüber weinen . Jetzt speichere ich immer mehr.
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
noop



Anmeldungsdatum: 04.05.2005
Beiträge: 259

BeitragVerfasst am: 27.05.2005, 18:17    Titel: Antworten mit Zitat

Joa das mit dem wait wäre fürs erste wohl mal ganz gut.
Aber ums optimieren werd ich wohl früher oder später nicht drum rum kommen.
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 QBasic. 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