Qbasic und externe Dateien

Von: , Frage gestellt am Mo, 22. Jan 2001

Hallo an alle,

ich brauche ein paar Tips, wie ich unter Qbasic in externe Dateien schreiben und diese später auch wieder öffnen kann.

Beispiel:

For a = 0 to 100
Input x,y,z,
Next a:

Jetzt eine Datei neu erstellen und alle eingegebenen Dateien seriell abspeichern (also 300 Zahlen).
Datei schließen und bsp.weise unter a: abspeichern

Drei Tage später ein Programm öffnen, was auf jene Datei auf a: zurückgreift und diese Dateien in einer Art "Read" seriell zurückholt.

Read x,y,z, ...
Ich habe die Sache mit "Open" nicht ganz verstanden ...

Wer könnte mir da bitte zeigen, mit welchen Programmzeilen ich so etwas mache ?

Vielen Dank an alle, die mir helfen können!

Lutz

10 Antworten zu dieser Frage

  1. Antwort von nach 13 Stunden hilfreich
    Re: Qbasic und externe Dateien

    Soweit ich mich erinnere, verwaltet Basic die offenen Dateien in einem Array. Mit Open erh"alst Du einfach den Index in diese Dateiverwaltung, mit -- Read Dateinummer, was -- liest Du von der Datei. Es ist vieles sehr einfach (z.B. auch Grafik), leider auch die sinnvoll l"osbaren Problemstellungen.

    Ciao, auch Lutz

  2. Antwort von nach 17 Stunden hilfreich
    Re: Qbasic und externe Dateien

    Beispiel:

    For a = 0 to 100
    Input x,y,z,
    Next a:

    Jetzt eine Datei neu erstellen und alle eingegebenen Dateien
    seriell abspeichern (also 300 Zahlen).
    Datei schließen und bsp.weise unter a: abspeichern

    Drei Tage später ein Programm öffnen, was auf jene Datei auf
    a: zurückgreift und diese Dateien in einer Art "Read" seriell
    zurückholt.

    Read x,y,z, ...

    Datei$ = "a:\xyz.dat"   ' *** Name der Datei ***
    REM ***** Datei so oeffnen, dass in sie geschrieben werden kann *****
    OPEN Datei$ FOR OUTPUT AS #1
    REM ***** 100 Eingaben zu je 3 Ziffern und diese in die Datei speichern *****
    FOR a = 1 TO 3
    INPUT x, y, z
    PRINT #1, x, y, z
    NEXT a
    REM ***** Datei schliessen *****
    CLOSE #1
    REM ***** Datei so oeffnen, dass aus ihr gelesen werden kann *****
    OPEN Datei$ FOR INPUT AS #1
    REM ***** Daten lesen und am Bildschirm anzeigen *****
    DO WHILE NOT EOF(1)
    INPUT #1, x, y, z
    PRINT x, y, z
    LOOP
    REM ***** Datei schliessen *****
    CLOSE #1


    Das, was ich da geschrieben habe, liest die Datei natürlich nicht 3 Tage später, sondern gleich wieder aus. Du müsstest halt 2 Programme draus machen.

    Nur so nebenbei: for a=0 to 100 würde 303 Zahlen speichern, da es von 0 bis 100 101 Zahlen sind. Zähl mal nach ... ;-)

    Falls du noch Fragen dazu hast, darfst du mich gerne kontaktieren. Es macht mir fast Spass, mich wieder um 10 (Programmierer-)Jahre zurückzuversetzen ... ;-)

    Servus
    Roland

    • Antwort von nach 20 Stunden hilfreich
      Re^2: Qbasic und externe Dateien

      Alles klar, ich bedanke mich erstmal.

      Ein Frage habe ich noch:

      Das Basic - Programm startet von einer selbsstartenden CD.
      Je nach Rechner kann dieses CD-Laufwerk d:, e:, f: ,... sein.
      Wie kriegt das Programm mit, auf welchen Laufwerk die Dateien nun liegen, auf die zurückgegriffen werden soll ?
      ( oder mit :
      Input "Welchen Buchstaben hat Ihr CD-Laufwerk";lw ...)
      Ist das mit Basic machbar oder kommt es in die autoexec.bat rein ?

      Bis bald !
      Lutz

      • Antwort von nach 21 Stunden hilfreich
        Re^3: Qbasic und externe Dateien

        .. und noch eine Frage nachgeschoben.

        Ich will vor Start des Basic-Programmes eine BMP als Startbildschirm anzeigen. Ist das mit einfachen Miteln machbar ?

        Lutz (der hofft, jetzt alle Gedanken zusammen zu haben und nicht noch was nachschiebt ... )

        • Antwort von nach einem Tag hilfreich
          Re^4: Qbasic und externe Dateien

          "Ahm,

          zwei Varianten, entweder einen Viewer per bat starten, weiss ich aber nicht, wie man da das Ende vern"unftig definiert, mal nach Splash (screen) suchen.

          Oder die harte Variante: bei http://www.wotsit.org das bmp Format angucken, mit screen-Befehl in Grafikmodus wechseln und alle Pixel einzeln malen. In den meisten F"allen ist BMP einfach Bildgr"osse, Farbtabelle, Pixelwerte hintereinander.

          Ciao Lutz [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

      • Antwort von nach 22 Stunden hilfreich
        Re^3: Qbasic und externe Dateien

        Das Basic - Programm startet von einer selbsstartenden CD.
        Je nach Rechner kann dieses CD-Laufwerk d:, e:, f: ,... sein.
        Wie kriegt das Programm mit, auf welchen Laufwerk die Dateien
        nun liegen, auf die zurückgegriffen werden soll ?
        ( oder mit :
        Input "Welchen Buchstaben hat Ihr CD-Laufwerk";lw ...)
        Ist das mit Basic machbar oder kommt es in die autoexec.bat
        rein ?
        Servus Lutz

        Wenn die Daten auf dem selben Laufwerk und womöglich sogar im selben Verzeichnis wie das Programm sind, brauchst du überhaupt kein Laufwerk anzugeben, sondern einfach nur den Namen der Datei, dann sucht er sie sowieso in dem Verzeichnis, wo das Programm gestartet wird.

        Wenn die Daten zwar auf dem selben Laufwerk, aber in einem anderen Verzeichnis als das Programm liegen, dann müsste es funktionieren, wenn du einen relativen Pfad angibst.
        Beispiel:
        Das Programm liegt auf d:\Programm.exe und die Dateien liegen auf d:\Daten\xyz.dat.
        Dann kannst du im Programm ".\Daten\xyz.dat" (oder evtl. auch nur "Daten\xyz.dat") als Dateiname an.

        Falls es so nicht geht, dann ist es wohl am einfachsten, wenn du den Laufwerksbuchstaben mit einem Input-Befehl eingeben lässt.
        Mit der autoexec.bat hat es sicher nichts zu tun und ich wüsste auch gar nicht, wie man den Laufwerksbuchstaben eines CD-Laufwerks unter DOS ermitteln könnte. Ich glaube fast, als ich mit Qbasic gearbeitet habe, hat es noch gar keine CD-Laufwerke gegeben ... ;-)

        Wie man eine Bitmap mit Qbasic anzeigt oder ob das überhaupt geht, kann ich dir leider nicht sagen, das habe ich noch nie versucht.

        Bis zum nächsten Mal ;-)
        Roland

      • Antwort von nach einem Tag hilfreich
        Re^3: Qbasic und externe Dateien

        Das Basic - Programm startet von einer selbsstartenden CD.
        Je nach Rechner kann dieses CD-Laufwerk d:, e:, f: ,... sein.
        Wie kriegt das Programm mit, auf welchen Laufwerk die Dateien
        nun liegen, auf die zurückgegriffen werden soll ?
        Hi,
        qbasic kennt kein 'if exist', aber dos. Also starte qbasic doch aufruf einer dos batch in autorun.inf oder autoexec.bat.
        Man könnte auch das vorhandensein der autorun.inf zur ermittlung des cd-rom-laufwerk nehmen aber wenn du pech hast, ist auf dem pc ausgerechnet auf einer festplatte die f: heißt aus irgendwelchen gründen eine autorun.inf.

        Meine Idee, du legst auf der Cd eine Datei mit beliebigem namen z.b.: 'er45trxd.frg' an.

        Inhalt von starteqb.bat:
        set cdlw=
        lfnfor on
        for %%a in (i: h: g: f: e: d:) do if exist %%a\er45trxd.frg set
        cdlw=%%a
        %cdlw%\qbasic /run %cdlw%\programm.bas


        In dem qb-programm programm.bas kannst du das cd-Laufwerk mit environ ansprechen/auswerten

        Beispiel:
        lw$=environ$("cdlw")
        environ "cdlw="
        datei$=lw$+"\datei.dat
        open datei$ for input as #1
        ...

        Ich habe das nur theoretisch durchgespielt, test's halt mal :-)
        Gruß
        olala
        achja, quellcodes von bmp-anzeige--programmen in qbasic findest du in suchmaschinen unter qbasic AND bmp








        • Antwort von nach einem Tag hilfreich
          Re^4: Qbasic und externe Dateien

          Meine Idee, du legst auf der Cd eine Datei mit beliebigem
          namen z.b.: 'er45trxd.frg' an.

          Inhalt von starteqb.bat:
          set cdlw=
          lfnfor on
          for %%a in (i: h: g: f: e: d:) do if exist %%a\er45trxd.frg set cdlw=%%a
          %cdlw%\qbasic /run %cdlw%\programm.bas
          Es gibt allerdings auch keine Garantie, dass auf der Festplatte nicht doch auch eine Datei mit dem Namen 'er45trxd.frg' - oder wie auch immer man sie nennt - existiert ...
          Die Idee, die Laufwerksbuchstaben von hinten nach vorne (also z: bis d:) zu durchsuchen, gefällt mir, denn das CD-Laufwerk ist normalerweise das mit dem letzten Laufwerksbuchstaben - ausser es folgen noch Netzlaufwerke ...
          Aber eine 100%ig sichere Möglichkeit, den Laufwerksbuchstaben des CD-Laufwerks unter DOS festzustellen gibt es meines Erachtens nicht. :-(

          Salü
          Roland

          • Antwort von nach einem Tag hilfreich
            Re^5: Qbasic und externe Dateien

            Meine Idee, du legst auf der Cd eine Datei mit beliebigem
            namen z.b.: 'er45trxd.frg' an.

            Inhalt von starteqb.bat:
            set cdlw=
            lfnfor on
            for %%a in (i: h: g: f: e: d:) do if exist %%a\er45trxd.frg set cdlw=%%a
            %cdlw%\qbasic /run %cdlw%\programm.bas
            Probiere ich mal aus... Es gibt allerdings auch keine Garantie, dass auf der
            Festplatte nicht doch auch eine Datei mit dem Namen
            'er45trxd.frg' - oder wie auch immer man sie nennt - existiert
            ...
            Auf der CD ist sind die vorhandenen Daten durchaus überschaubar ( weil alle von mir selbst erzeugt - abgesehen von Systemdateien)
            und eine Dopplung ist mit an Sicherheit grenzender Wahrscheinlichkeit ausgeschlossen. ist normalerweise das mit dem letzten Laufwerksbuchstaben -
            ausser es folgen noch Netzlaufwerke ...
            Kann hier durchaus der Fall sein.


            Gruß Lutz



Keine passende Antwort gefunden? Jetzt eigene Frage stellen!