Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

das gute alte QBasic - und seine tücken!

RUSHBLAZE / 1 Antworten / Flachansicht Nickles

hi, ich programmiere grad mal wieder in qbasic ein wenig herum und auf einmal stoße ich auf ein problem, was ich denke nicht selber lösen zu können. ich würde es erstens gerne vorziehen, wenn ich unter qbasic eine variable habe, in die man so viel man will reinschreiben kann, denn wie ich festgestellt habe ist da eine maximale variablengröße festgelegt. ich meine darauf könnte ich noch verzichten, aber ich habe noch ein weiteres problem, ich will nun jede einzelne stelle der variable auf inhalt überprüfen (wie man es in dateien ja machen kann) - aber ich find einfach keinen befehl, der das bewerkstelligen könnte, könnt ihr mir da nicht weiterhelfen.
so und nun noch etwas zu sachen, mit denen ich nichts anfangen kann - ich weiß zwar, was sie bedeuten, jedoch würde ich gern ein beispiel dafür hören, um es praktisch zu verstehen (?) - also nur ein name und zwar speicheradresse - den inhalt einer speicheradresse einlesen (mit peek()), nun weiß ich aber gar nicht, wo ich die einzelnen speicheradressen, die ich dafür benötige herbekomme - ich meine, gibts dafür sowas wie ne übersicht (wie mit den farben, da gibts in der hilfe auch ne übersicht, welcher wert welcher farbe entspricht) - wär nett, wenn ihr mir irgendein beliebiges beispiel mit erklärung geben könntet und wenn ihr das zweite nicht könnt, nicht wollt oder weiß ich was, dann wärs nett, wenn ihr mir wenigstens die oberen fragen beantwortet -
im voraus schon mal danke RUSHBLAZE

bei Antwort benachrichtigen
mpau RUSHBLAZE „das gute alte QBasic - und seine tücken!“
Optionen

Wenn die Variable vom Typ String ist (mit dem '$' dahinter), dann kommt die Beschrenkung daher, das QBasic die
Länge des Strings in einem Byte speichert, das bekanntlich nur 256 Werte beinhalten kann. Die Stellen im String kann
man über die Funktion MID$ auslesen, nämlich wie folgt:
MID$ (StringName$, Position, Laenge)
wenn man nur ein Zeichen auslesen will muss die Länge auf 1 gesetzt sein. Diese Funktion liefert als Rückgabewert
den String ab Position mit der Länge Laenge des angegebenen Strings ein Beispiel:
Strng$ = "Hallo"
Position = 2
PRINT Position; ", Zeichen in "; Str$; " ist "; MID$ (Strng$, Position, 1)
Dieses Beispiel gibt folgendes aus:
2. Zeichen in Hallo ist a
Man muss darauf aufpassen, dass das 1, Zeichen an Position 1 steht und nicht wie bei vielen anderen Sprachen
bei 0.
Zu "peek ()":
peek () liefert einen Beliebigen Inhalt des Speichers man muss nur davor die Segmentadresse mit DEF SEG festlegen
z.B.:
DEF SEG = &HB800
PRINT PEEK (4)

greift direkt auf den Bildschrimspeicher (befindet sich ab Adresse B800 (hex)) zu und liest dort den Zeichencode des 2.
Zeichens auf dem Bildschirm zurück und gibt diesen aus.
Wenn man wissen will an welcher Adresse sich eine Variable befindet, kann man dies durch die Funktionen VARPTR
VARSEG heraus bekommen. VARSEG (Variablenname) liefert die Segmentadresse. VARPTR den Offset (der bei
PEEK angegeben werden muss.
Ein Beispiel:
Strng$ = "Hallo"
DEF SEG = VARSEG (Strng$)
PRINT CHR$(PEEK (VARPTR(Strng$)+1))
Die Ausgabe:
a

bei Antwort benachrichtigen