Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 21.05.2005, 15:00 Titel: mid$/len$ |
|
|
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 |
|
 |
Kai Bareis

Anmeldungsdatum: 10.09.2004 Beiträge: 545 Wohnort: Baden Würtemberg
|
Verfasst am: 21.05.2005, 15:06 Titel: |
|
|
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 |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 21.05.2005, 15:07 Titel: |
|
|
Das wars. Danke. |
|
Nach oben |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 24.05.2005, 17:49 Titel: |
|
|
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 |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 25.05.2005, 15:55 Titel: |
|
|
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 |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 25.05.2005, 16:11 Titel: |
|
|
Das Zauberwort heißt Optimierung
Wenn ein Code funktioniert, kannst du ihn immer noch optimieren.
Diese Optimierung betrifft meist die Geschwindigkeit.
Ein Tip ist zum Beispiel ein
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 25.05.2005, 19:56 Titel: |
|
|
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 |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 25.05.2005, 21:39 Titel: |
|
|
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. Dann musste ich auf Reset drücken. Meine 1:30 h arbeit war hinüber . Jetzt speichere ich immer mehr. _________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
noop
Anmeldungsdatum: 04.05.2005 Beiträge: 259
|
Verfasst am: 27.05.2005, 18:17 Titel: |
|
|
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 |
|
 |
|