Auch nicht schlecht.
Schönen Gruß.
Auch nicht schlecht.
Schönen Gruß.
Wer aber meint, daß er darauf verzichten kann, dem sage ich:
"Am Anfang war die Zeilennummer und der Doppelpunkt."
Schönen Gruß.
Wie ich schon gesagt habe, man kann nicht überall sparen, allein wegen der Ästhetik des Doppelpunktes.
Schönen Gruß.
Wo ich weiteren Code einfügen würde ?
Das bleibt natürlich das Geheimnis des Programmierers.
Wie wäre es mit einem gosub50 statt der Verzögerungsschleife.
Schönen Gruß.
Was natürlich von der Anwendung abhängt.
Auch mein Programm hat natürlich seine Vorteile:
-kein Stringmüll,
-keine GarbageCollection,
-es werden keine CLR´s benötigt.
-es wird kein externer Speicherplatz verwendet,
-es wird kein Maschinenprogramm benötigt.
-Abgesehen davon kann man natürlich auch bei meiner Methode den Text in Datazeilen ablegen und einlesen, muß man aber nicht.
-Als weiteren Vorteil könnte man ansehen, daß auch meine Lösung mit 3 Zeilen relativ kurz ist. Aber auch da kann man vermutlich noch was kürzen.
Schönen Gruß.
Äh ja, ich könnte die Geschwindigkeit ja noch steigern, wenn ich z.B. die Doppelpunkte am Anfang weglasse.
Also, was ich sagen wollte, ist, daß auch mein Programm noch nicht völlig optimiert ist, aber dennoch, finde ich, schon zeigt, wie man es mit der Methode machen kann.
Schönen Gruß.
Für die Freunde der Garbage-Collection-Vermeidung:
Der Kenner hat sicherlich erkannt, daß die Stringaddition in Zeile.5 zu einer GBC führen kann.
Daher kann man bei dem b$-Ausdruck noch das chr$(20) entfernen und durch ein Leerzeichen ersetzen.
Selbes Leerzeichen kann man dann mit einem reversen-t + Return überschreiben.
Das ersetzt dann das chr$(20).
Damit spart man dann gleich dreifach:
1. an Programmcode
2. den Stringmüll+String im Stringram
3. einen eventuellen Zeitverlust durch die GBC
Schönen Gruß.
Für einen Geschwindigkeitsvergleich kann man mal die Variable b in Zeile.5 auf Null setzen.
Oder die Verögerungsschleife in Zeile.20 durch ein rem ausschalten.
Schönen Gruß.
Hier noch einmal ein Code auf der Basis der Stringadresse, der durch die Arbeit mit peek, keine GBC und keine Data-Zeilen benötigt.
5 ::b=50:print"[clr]z-roll:":print::b$="[hoch,rechts]"+chr$(20)+"[runter,links]"
10 :a$="hallo, wie geht es euch ? ":gosub20
11 :a$="und so weiter und so fort. ":gosub20:goto10
19 :
20 :fora=peek(34+0*len(a$))+peek(35+0*len(a$))*256toa+len(a$)-1:fori=0tob:next
21 :printb$chr$(peek(a));:next:return
Schönen Gruß.
Ja, doch etwas schwer durchschaubar.
SchönenGruß.
Mike:
Herzlichen Glückwunsch!
Auch wenn ich natürlich bemängeln könnte, daß die Erklärung zu deinem letzten Listing etwas knapp ist, sage ich hier einmal daß die Lösung wirklich ziemlich fix arbeitet.
Schönen Gruß.
Mike:
Hallo Mike, versuchst du es mal wieder mit einer Charmoffensive?
Schönen Gruß.
Wenn man mehrere Strings hat, kann man das Unterprogramm mehrmals aufrufen.
-Oder man kann die Strings, die sich ja innerhalb des Programms befinden in den Stringram-Bereich kopieren.
Mit a$=a$+"":
-Oder man addiert einfach mehrere Strings zusammen. Ein String kann ja bis zu 255 Zeichen erhalten, was immerhin über 6 Zeilen x 40 Zeichen Scrolltext sind.
Pro String versteht sich.
Schönen Gruß.
Man kann also sagen, daß der Sinn der Rechnung nicht darin liegt etwas zu berechnen, sondern die Register 34/35 mit der gewünschten String-Adresse zu laden.
Schönen Gruß.
Bytebreaker:
Die Funktion holt einfach nur die Stringadresse aus 34/35. Der Rest sorgt dafür, daß die Adresse in 34/35 auftaucht.
(a$..) ist immer Null, so daß peek(34/35) nicht geändert wird, sorgt aber dafür, daß die Stringadresse in 34/35 auftaucht.
Ansonsten denke ich, daß peek schneller ist als read oder asc(mid .
Außerdem macht es keine GBC.
Schönen Gruß.
Man muß nicht immer mit Datas arbeiten. Wenn man Strings ausgibt, dann kann man auch mit Strings arbeiten.
Hier noch einmal die Funktion zur Ermittlung der Stringadresse.
Das heißt praktisch, daß man alle Stringzeichen nun mit peek lesen kann.
5 :a$="hallo, wie geht es euch"
10 :a=peek(34+(a$<""))+peek(35+(a$<""))*256
11 :printpeek(a),chr$(peek(a))
Natürlich läßt sich der Ausdruck auch in eine Funktion packen.
Schönen Gruß.