Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Variablen in einer txt abspeichern und wieder abrufen

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 18.09.2008, 09:41    Titel: Variablen in einer txt abspeichern und wieder abrufen Antworten mit Zitat

Hallo Programmierfreunde,
da ich über längere Zeit, und auch, wenn der PC zwischenzeitlich aus ist, etliche Variablen verwalten möchte,
brauche ich eine Möglichkeit, diese in einer z.B. txt-Datei abzuspeichern,
damit ich sie von dort jederzeit wieder einlesen kann.

Ich habe aber keine Ahnung, wie sowas geht.
In der Referenz sind Tutorials zu dem Thema, aber ich muss leider zugeben :
Ich habe nix verstanden.
verwundert

Ich versuche mal zu beschreiben, was jetzt bei mir angekommen ist von den ganzen Informationen aus der Referenz :
Mit der Anweisung OPEN und der Angabe von ACCESS und Dateimodus kann ich ich auf andere Dateien zugreifen, sowohl lesen als auch schreiben.
Wenn ich richtig verstanden habe, kann ich aber nicht einzelne Variablen in dieser Datei überschreiben,
sondern muss immer alles, was in der Datei stehen soll, komplett neu hineinschreiben lassen.


Da ich wirklich nicht verstanden habe, wie ich meine Variablen in die Datei hinein und von dort wieder in den Arbeitsspeicher bringe,
wäre ich froh um Code-Sequenzen, die ich direkt ausprobieren kann ...
verlegen

Mein Beispiel (fiktiv):
Ich habe 80 Mitarbeiter, deren Gehalt, Resturlaub und Stundenkonto ich per Variablen abspeichern und wieder auslesen will.
Im Hauptprogramm bearbeite ich diese Variablen immer per FOR-NEXT-Schleife:
Code:
For i = 1 to 80
Gehalt(i) und jetzt kommt irgendwas
Urlaub(i) und jetzt kommt irgendwas
Stunden(i) und jetzt kommt irgendwas
Next

( ... könnte sein, dass das etwas umständlich ist, spielt aber im Moment keine Rolle, ich bin ja erst noch am Lernen)


Jetzt also konkret :
Wie kann ich diese 3 x 80 Variablen abspeichern und wieder auslesen ?



Danke für Eure Geduld beim Lesen und Mitdenken ...
zwinkern

HungGar
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 18.09.2008, 13:24    Titel: Antworten mit Zitat

Hi,
versuch es einmal so. Natürlich musst du erst einmal die Daten Speichern bevor du sie einlesen kannst zwinkern
Code:
Declare Sub lade_daten (filename As String)
Declare Sub speicher_daten (filename As String)
Dim Shared As Integer Gehalt(1 To 80), Urlaub(1 To 80), Stunden(1 To 80)

lade_daten ("meineDaten.dat")
'dein Programm
'..
speicher_daten ("meineDaten.dat")
end

Sub lade_daten (filename As String)
  Dim As Integer i, ff= FreeFile
  Open filename For Input As #ff
  For i = 1 To 80
    Input #ff, Gehalt(i) 'und jetzt kommt irgendwas
    Input #ff, Urlaub(i) 'und jetzt kommt irgendwas
    Input #ff, Stunden(i) 'und jetzt kommt irgendwas
  Next
  Close #ff
End Sub

Sub speicher_daten (filename As String)
  Dim As Integer i, ff= FreeFile
  Open filename For Output As #ff
  For i = 1 To 80
    Print #ff, Gehalt(i) 'und jetzt kommt irgendwas
    Print #ff, Urlaub(i) 'und jetzt kommt irgendwas
    Print #ff, Stunden(i) 'und jetzt kommt irgendwas
  Next
  Close #ff
End Sub

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 18.09.2008, 21:48    Titel: Antworten mit Zitat

Optimaler wäre natürlich folgendes:

Code:
Type TMitarbeiter
    Gehalt As Double
    Urlaub As Double
    Stunden As Double
End Type

Dim Shared Mitarbeiter(1 To 80) As TMitarbeiter

Sub Speichern(Datei As String)
    Var ff = FreeFile
    Open Datei For Binary As #ff
    Put #ff, , Mitarbeiter()
    Close #ff
End Sub

Sub Laden(Datei As String)
    Var ff = FreeFile
    Open Datei For Binary As #ff
    Get #ff, , Mitarbeiter()
    Close #ff
End Sub

' ############## Test!
Mitarbeiter(1).Gehalt = 1000
Mitarbeiter(1).Urlaub = 37.5
Mitarbeiter(1).Stunden = 40
Mitarbeiter(2).Gehalt = 2000
Mitarbeiter(2).Urlaub = 55
Mitarbeiter(2).Stunden = 45
Speichern("test.dat")
Laden("test.dat")
Print "Mitarbeiter 1:"
Print "Gehalt: " & Mitarbeiter(1).Gehalt
Print "Urlaub: " & Mitarbeiter(1).Urlaub
Print "Stunden: " & Mitarbeiter(1).Stunden
Print
Print "Mitarbeiter 2:"
Print "Gehalt: " & Mitarbeiter(2).Gehalt
Print "Urlaub: " & Mitarbeiter(2).Urlaub
Print "Stunden: " & Mitarbeiter(2).Stunden
Sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 18.09.2008, 23:50    Titel: Antworten mit Zitat

Ich habe jetzt beide Versionen ausprobiert.
Mit beiden habe ich das Problem, dass die Variablen nicht angenommen werden.
(kanns leider nicht besser beschreiben)

Beim zweiten Beispiel habe ich im gesamten Programm alle Variablen der neuen Schreibweise angepasst,
aber dann zig Fehlermeldungen bekommen.


Beim ersten Beispiel habe ich nur wenige Fehlermeldungen, und zwar immer Folgende:
    test03.bas(3571) error 41: Variable not declared, Gehalt in 'PRINT #ff, Gehalt(i)'
    test03.bas(3571) warning 12(0): Implicit variable allocation, Gehalt


Was bedeutet in diesem Falle declare ?
Und was läuft hier schief ?

Der Code dazu:
Code:
SUB speicher_daten (filename AS STRING)
   Dim ff As Integer
   Dim i As Integer
     ff= FREEFILE
     OPEN filename FOR OUTPUT AS #ff
     FOR i = 1 TO 80
       PRINT #ff, Gehalt(i)
    NEXT
     CLOSE #ff
END SUB




mit den Augen rollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 19.09.2008, 10:22    Titel: Antworten mit Zitat

Beide Fehlermeldungen deuten an, dass im Unterprogramm (SUB) die Variable (oder das Array) "Gehalt" nicht bekannt ist.
Wenn man auf Variable in Subs zugreifen möchte, die im Hauptprogramm dimensioniert wurden, muss man diese Dimensionierung mit dem Begriff "SHARED" versehen.
D.h. am Anfang deines Programms sollte
Code:
Dim Shared As Integer Gehalt(1 To 80)
stehen. Damit wird das Array deklariert (angemeldet).
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 19.09.2008, 23:40    Titel: Antworten mit Zitat

Danke,
jetzt funktionierts.
lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz