Hallo Besucher, der Thread wurde 1,1k mal aufgerufen und enthält 8 Antworten

letzter Beitrag von BIF am

[FRAGE] Daten aus anderem PRG ins aktuelle PRG einlesen und Anzeigen mögl.?

  • Servus,


    da is mal wieder der Goasler mit einer Frage die mir auf den Lippen brennt :whistling: .
    Ich würde gerne wissen ob ein Programm im Programm möglich ist.


    Zu den Details:
    Ich arbeite grad an einem Programm "PC-Games Sammlung".
    Naja es soll meine ganzen Games nach Genre auflisten,
    sehe ich als "Übung" damit meine BASIC Kenntnisse nicht einrosten.


    Wenn ich jetzt meine Games ins Hauptprogramm reinschreibe
    (Selbst mit Variablen like G1$="" usw.)
    muss ich bei jeder Änderung immer das Hauptprogramm ändern.


    Gäbs nicht ne Möglichkeit zu sagen:
    Wenn ich Genre "Action" Aufrufe, dann hole dir die anzuzeigenden Daten aus dem Programm "Daten für Genre1",8 auf der selben Diskette?
    So das ich meine Games nur in den einzelnen Datenbänken eintragen / ändern brauch und
    das Hauptprogramm nur die Infos anzeigt aus den Unterprogrammen.


    So nach dem Motto:


    So wie bei HTML mit einer IFrame (Inline Frame) wo ich in einer Seite den Inhalt aus ner anderen Seite anzeigen kann.


    Vielleicht ginge auch was mit ner Variable like:
    G1§=LOAD "Daten für Genre1",8


    Wichtig ist mir das ich alles auf eine D64er Datei / Diskette bekomme.
    Mein Hauptprogramm hat gerade mal 14 Bytes + 14 Bytes Diskettendesign ^^


    Danke schon mal im Voraus :thnks:
    Google und Forum SuFu erfolglos benutzt.


    GreetZ
    Da Goasler

  • Schaumal hier
    basic loader/nachloader
    oder hier
    Daten nachladen?


    und wenn Du es schlau machen willst,evtl. sogar gleich hier:
    http://www.c64-wiki.de/index.p…nel#Disketten-Operationen


    PS: wenn es echt nur um daten geht, ist ".SEQ" in BASIC durchaus tauglich:
    http://www.c64-wiki.de/index.php/PRINT%28Raute%29

  • PS: wenn es echt nur um daten geht, ist ".SEQ" in BASIC durchaus tauglich:


    Ja es geht um Alphanumerische Daten. Also Wörter mit oder ohne Zahlen.
    SEQ klingt interessant und will ich eig auch versuchen.
    Das mit Print# sieht mir nach ner guten Lösung aus,
    auch wenn ich bis jetzt noch nicht weis wie ich es dann hinbekomme ^^


    Nur, habe ich noch nie mit SEQ dateien gearbeitet.
    Wie müssen die denn aussehen im inneren?
    auch mit Zeilennummern?
    Und wie trage ich da dann meine daten ein?
    10 PRINT""
    oder anders?



    Edit: Habe ein PRG in SEQ umgewandelt mit dem D64 Editor.
    Nur wie hole ich mir dann die Daten aus der SEQ in mein Programm?
    PRINT# dient ja nur zum schrieben von daten in ein SEQ programm.

  • Am Besten wäre hier
    a: Aufbau / Aussehen einer SEQ Datei.
    B: Wie rufe ich die daten aus der SEQ datei ab und zeige sie an ? (am besten mit Programmcode)


    Versucht hab ichs mit


    Code
    1. 10 OPEN 1,8,2,"014.dbg1"
    2. 20 GET#1,A$
    3. 30 PRINT#1,A$
    4. 40 CLOSE 1


    jedoch ohne erfolg


    Inhalt der "014.dbg1" SEQ ist:

    Code
    1. 10 REM test
  • Du musst da schon zwischen Datendateien und Programmdateien unterscheiden. Eine SEQ (sequentielle Datei) musst du auch an anderer Stelle genauso beschreiben, wie du sie nachher ausliest.


    Du kannst nicht einfach ein BASIC-Programm abspeichern und als sequentielle Datei auslesen versuchen (Nörgelecke: Ja, doch, kann man. Dann muss man aber auch wissen, was man da rausliest. Es ist nicht effizient (auch nicht, wenn man Doppelpunkte reinsprenkelt) )

  • Dein 1541-Handbuch enthält ein Kapitel über sequentielle Dateien...
    Deinem Programm aus Post #4 fehlt zum einen die Schleife, und zum anderen erfolgt die Ausgabe wieder in die Datei (was nicht gehen kann). Ein einfaches Ausleseprogramm sähe z.B. so aus (ohne Gewähr für blöde Fehler, da ungetestet):

    Code
    1. 10 open 1,8,2,"file":rem öffne datei
    2. 20 get#1, a$:if a$ = "" then a$=chr$(0):rem lies byte aus datei
    3. 30 s=st:rem lies status
    4. 40 print a$;:rem gib gelesenes byte aus
    5. 50 if (s and 64) = 0 then 20:rem wiederhole bis end-of-file
    6. 60 close 1
  • Wenn sich in der SEQ-Datei ein normales Basic-PRG befindet müßte man das mit
    :load"name,s",8: laden können und dann mit dem Listbefehl anzeigen können.


    Falls man mit GET# die Datei ausliest und mit print anzeigen will, müßte man die Basic-Token in Klartext verwandeln.
    Und außerdem die Zeilennummern in eine Fließkommazahl wandeln.


    Schönen Gruß.