Strings und Memorybanks
Übersicht

mpreuBetreff: Strings und Memorybanks |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich würde gern einen String, gespeichert in einer Variablen in eine Bank schreiben, und dort aber auf die einzelnen Zeichen zugreifen wollen können, d.h. sie auch einzeln oder paarweise auslesen können.
Wie müsste ich da vorgehen? p.s. Bevor ich es vergesse, ich möchte den String in einer bank speichern und weitestgehend auf Befehle wie Mid$ etc. verzichten wollen. |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
PeekByte![]() ![]() Das setzt aber natürlich voraus, dass du die zu "peekende" Position weißt oder sie aus Ascii-Wert-Vergleichen heraus finden müsstest. mfG, Christoph EDIT: Achja, zum Schreiben des Strings in eine Bank wäre dann PokeByte ![]() Und vergiss nicht, dir am Ende gut zu überlegen ob das ganze Gewurschtel dann wirklich besser is als Mid, Instr und Co ![]() |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
in anlehnung an Eingeproggts antwort:
Damit du die positionen weißt, könntest du anfangs eine art inhaltsliste schreiben, einfach nur zahlen. Wichtig ist, das du eindeutig weißt, das ab einer bankposition nun strings kommen! Alternativ, schreibe erst eine identifizierungszahl rein. Zb Byte 1 ist string, byte 2 ist int... damit du dich zurecht findest ![]() Sobald du weißt, das ein string kommt, schreibst du noch folgende sachen: 1: Anzahl der Zeilen deines Strings 2 bis 2+n: Beginn position einer jeden Zeile in der bank Folgend: Zeichenwerte deiner Zeilen. Nun musst du noch aufpassen, wie lang deine Zeilen sind, das könntest du alternativ in die "inhaltsliste" reinschreiben oder anderweitig rausfinden. So kannst du die ersten paar stellen deiner bank raussuchen und gucken, was drinsteht. Bist du bei deinem wunschstring angekommen (oder du weißt zb durch eine variable, wo du anfangen musst zu suchen) kannst du jede Zeile wiederfinden die du haben willst. Wichtig ist dann nurnoch, das du dich mit den indexzahlen nicht vertust ![]() |
||
mpreu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also das Auslesen mit PeekByte ist mir klar.
Wie kann ich aber z.B. s$ = Hallo Du Welt" in einer Bank speichern und dann nur das Wort "Du" auslesen und dann in einer Variablen, sagen wir neu_s$ speichern? Also im Großen ganzen wie Mid$, nur eben ohne Mid$. Also ohne den Text zu kennen, sondern nur anhand Offset und Länge des zu kopierenden Textes. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kann mir nicht recht vorstellen, wie man in BB einen String zerteilen sollte, ohne von den String Funktionen Gebrauch zu machen. Oder warum man das wollen sollte... Schneller wirds damit bestimmt nicht. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
- Zuletzt bearbeitet von Xeres am So, Okt 20, 2013 11:16, insgesamt einmal bearbeitet
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du sagst du willst Mid() nicht benutzen aber etwas programmieren was GENAU das tut was Mid macht.
Strings in Banken abzulegen hat zwar Vorteile aber auch Nachteile. Vorteile: 1. sehr schnell Buchstaben AUSTAUSCHEN! aber nicht einfügen oder anhängen 2. es ist möglich Banken "aneinander" zuhängen (Stichwort: Verkettet Liste) 3. man kann(muss) Banken als Referenz an Funktionen übergeben (Bank wird, egal wieoft du sie an Funktionen übergibst NIE kopiert) Nachteile: 1. Banken müssen gelöscht werden wenn man sie nicht mehr braucht sonst ist irgendwann der Arbeitsspeicher voll 2. du kannst nicht mehr einfach "+" benutzen, wie bei Strings, um Texte aneinander zu hängen 3. Blitz Befehle nutze Strings, das heist du müsst jedesmal wieder hin- und herwandeln Hier ein paar der Funktionen die man für Banken dann benötigt: Erstellen() Löschen() Kopieren() Zusammenfügen() Einfügen() AuslesenVonBis() das wäre als das selbe wie Mid() AbschneidenVorne() AbschneidenHinten() Ersetzen() Suchen() ... Die Strings in Blitz können noch mehr, daher rate ich dir es zu lassen, es sei den Punkt 2. und Punkt 3. sind ein Absolutes muss. |
||
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie ich (etwas unzureichend) beschrieben habe:
1.) String mittels PokeByte in die bank schieben. Das geht nur byte-weise und hier leider nur unter verwendung von Mid. 2.) In der Bank die Funktionalität von Instr "nachprogrammieren", sprich mit PeekByte und Ascii-Wert-Vergleichen. 3.) Die gewünschten Zeichen wieder mittels Chr zu Buchstaben wandeln und die zu einem neuen String verketten. Ist aber garantiert sowas von viiiel langsamer als die normalen String-Befehle... Das ist leider nur sowas wie eine "Fingerübung zum Erlernen von Banks" ![]() mfG, Christoph |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
mpreu |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dann sehe ich es als Fingerübung und würde dies dennoch gern versuchen.
Ich werde mal Eingeproggt´s Hinweisen nachgehen und das versuchen umzusetzen. |
||
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie wärs mit dem alten C64? *Ironie*
lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Auch der hat bereits Stringbefehle, von daher ist dieser Vorsachlag leicht unangebracht ![]() |
||
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 |
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, es ging mir nicht um die Sringbefehle, sondern mehr darum warum leicht wenn es kompliziert auch geht! Und ich hatte LEIDER nie einen C64, ich bin mit MSX großgeworden!
lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und der C64 ist kompliziert? Im Gegensatz zu modernen Systemen ist er sogar extremst leicht zu verstehen ![]() |
||
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 |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nur einen beschaffen (plus einem passenden Monitor und Diskettenlaufwerk) ist wohl etwas komplizierter ![]() |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Na, nicht wirklich. Die werden zwar weniger aber sind problemfrei zu kriegen. Fürs Basteln langt auch eine Datassette, und ein Monitor ist nicht nötig, zumindest nicht solange man noch einen Fernseher mit analogem Kabelanschluss hat.
Aber wir schweifen ab. Ich finde die Idee mittels einer Bank Stringbearbeitung zu implementieren um die Bank zu beherrschen reizvoll, egal ob es sinnig ist oder nicht. Wenn es seinen Zweck erfüllt (mpreu lernt was) ist es doch absolut probat. |
||
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 |
![]() |
AnniXa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jamagin hat Folgendes geschrieben: Naja, es ging mir nicht um die Sringbefehle, sondern mehr darum warum leicht wenn es kompliziert auch geht! Und ich hatte LEIDER nie einen C64, ich bin mit MSX großgeworden!
lg. Jamagin hey nichts gegen den C64! der hatte nen supereasy und spaßiges basic drauf. Poke 53281,0 und der bildschirm wurde schwarz (also der bereich wo man schreibt den ramen mit der adresse 53280,0) keine ahnung warum ich das noch auswendig weis, aber es hat damals tierischen spaß gemacht. |
||
|moonForge|
Ich bin Pokémon Meisterin seit 1998! |
![]() |
Jamagin |
![]() Antworten mit Zitat ![]() |
---|---|---|
@anniXa!
ja, die guten alten Zeiten! Ich hab immer bei/mit nen Freund auf den C64 gezockt....! Da wären Bruce Lee, The Last Ninja, Giana Sisters, etc... ne Menge Spass halt! Mit heute kein Vergleich das Feeling von damals!!!! Aber das hat nichts mit diesem Thema hier zu tun, deshalb ziehe ich mich zurück! (Gibt es eine Sektion Cool Old Games - Retro?) lg. Jamagin |
||
Bevor du etwas neues beginnst, erledige das alte |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
In andere Dialekte können wir gerne zum Basic V2 des C64 klönen. ![]() |
||
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group