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:

Laden und Schreiben in eine .INI Datei durch Qbasic 4.5

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



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 11.12.2006, 04:59    Titel: Laden und Schreiben in eine .INI Datei durch Qbasic 4.5 Antworten mit Zitat

Hallo!

Ich möchte ein Programm schreiben das in eine .INI Datei Werte speichert, die dann später wieder durch Qbasic 4.5 aufgerufen werden.

Ich möchte so ca. mehr als 10 Werte in einer .INI Datei abspeichern

Leider bekomme ich eine Fehlermeldung beim Laden der .INI Datei.

Code:

Eingabe nach Dateiende


Code:

Eine INPUT-Anweisung liest aus einer leeren Null - (leeren) Datei, aus der bereits sämtliche Daten gelesen wurden.

Verwenden sie die EOF-Funktion um das Dateiende zu ermitteln.


Ich glaube das liegt daran das eine Variable oder Wert null ist also zum Bsp. A = ""

Keinen Wert besitzt.

Speichern funktioniert aber laden nicht.

Ich wollte den Quellcode aufteilen in eine andere .BAS Datei über oder mit SHELL "STOP.EXE" aufrufen und habe mir überlegt wie weiß dann das zweite Programm die gespeicherten Werte vom ersten Programm?

Entweder ich speichere die Werte in eine Datei oder es gibt einen Befehl für mein Problem?

Eventuell COMMON SHARED?

Nur bekomme ich mit COMMON SHARED eine Fehlermeldung im ersten bzw. eine Fehlermeldung im zweiten Programm?

Unzulässiger Funktionsaufruf beim zweiten Programm!

Ich wollte eine CPRINT Anweisung laufen lassen um auf dem Bildschirm die ausgelosten Spieler anzeigen zu lassen.

Ich hoffe ihr könnt mir helfen?

Habe bereits um die 700 Zeilen Code. (Es werden ja noch mehr)

Mit freundlichen Grüßen
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 11.12.2006, 16:47    Titel: Antworten mit Zitat

Poste mal bitte den fehlerhaften Code, da kann man so eher wenig zu sagen lächeln

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 11.12.2006, 21:38    Titel: Antworten mit Zitat

Siehe dazu auch

http://forum.qbasic.at/viewtopic.php?t=3258

Habe dort seinerzeit einen Beitrag platziert.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 12.12.2006, 00:43    Titel: Antworten mit Zitat

Hallo!

So in etwa stelle ich mir das vor!

Code:

PLAYE:
FELT 220, 60, 619, 420, 0

 REM GOTO 100
 STOP

 OPEN "STOP.INI" FOR OUTPUT AS #1

D1$ = SPIELER$(1)
D2$ = SPIELER$(2)
D3$ = SPIELER$(3)
D4$ = SPIELER$(4)
D5$ = SPIELER$(5)
D6$ = SPIELER$(6)
D7$ = SPIELER$(7)
D8$ = SPIELER$(8)
D9$ = SPIELER$(9)
D10$ = SPIELER$(10)
D11$ = SPIELER$(11)
D12$ = SPIELER$(12)
D13$ = SPIELER$(13)
D14$ = SPIELER$(14)
D15$ = SPIELER$(15)
D16$ = SPIELER$(Q)
S1 = GESAMTSPIELER
S2 = RUNDE
S3 = XY
S4 = YX
S5 = ROUND

PRINT #1, D1$, D2$, D3$, D4$, D5$, D6$, D7$, D8$, D9$, D10$, D11$, D12$, D13$, D14$, D15$, D16$
PRINT #1, S1, S2, S3, S4, S5
CLOSE #1

 T1 = A
 T2 = B
 T3 = C
 T4 = D
 T5 = E
 T6 = F
 T7 = G
 T8 = H
 T9 = I
 T10 = J
 T11 = K
 T12 = L
 T13 = M
 T14 = N
 T15 = O

'DIM SHARED GESAMTSPIELER
'DIM SHARED RUNDE
'DIM SHARED WO
'DIM SHARED S1
'DIM SHARED S2
'DIM SHARED S3
'DIM SHARED S4
'DIM SHARED S5
'DIM SHARED S6
'DIM SHARED S7
'DIM SHARED S8
'DIM SHARED S9
'DIM SHARED S10
'DIM SHARED S11
'DIM SHARED S12
'DIM SHARED S13
'DIM SHARED S14
'DIM SHARED S15
'DIM SHARED ROUND
'DIM SHARED GGG
'DIM SHARED WAS

SHELL "C:\STOP2.EXE"

 RETURN
REM 100

IF GESAMTSPIELER = 3 THEN
IF ROUND = 1 THEN A = 1: B = 2: C = 3: W = Q
IF ROUND = 2 THEN A = 1: B = 3: C = Q: W = 2
IF ROUND = 3 THEN A = 2: B = 3: C = 1: W = Q
CPRINT SPIELER$(A) + " ", 10, YX, 15, 7, 8
CPRINT SPIELER$(B) + " ", 12, YX, 15, 7, 8
IF C = Q THEN CPRINT "- " + SPIELER$(C) + " ", 12, XY, 15, 13, 5 ELSE CPRINT "- " + SPIELER$(C) + " ", 12, XY, 15, 7, 8
IF W = Q THEN CPRINT "- " + SPIELER$(W), 10, XY, 15, 13, 5 ELSE CPRINT "- " + SPIELER$(W), 10, XY, 15, 7, 8
END IF


mit CPRINT sollen die ausgelosten Spieler angezeigt werden.

Mit freundlichen Grüßen
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 12.12.2006, 21:19    Titel: Antworten mit Zitat

Also du solltest deinen Code mal ein bisschen optimieren lächeln
Code:

' freien Kanal suchen und schreiben
F = FREEFILE
OPEN "STOP.INI" FOR OUTPUT AS #F

' Schreibarbeit sparen
FOR i = 1 TO 15 STEP 1
 PRINT #F, SPIELER$(i),
NEXT i
PRINT #F, SPIELER$(Q)
PRINT #F, GESAMTSPIELER, RUNDE, XY, YX, ROUND

' Datei wieder schließen
CLOSE #F

So sollte das funktionieren... Zum Laden dann also:
Code:

' freien Kanal suchen und schreiben
F = FREEFILE
OPEN "STOP.INI" FOR INPUT AS #F

' Schreibarbeit sparen
FOR i = 1 TO 15 STEP 1
 INPUT #F, SPIELER$(i)
NEXT i
INPUT #F, SPIELER$(Q)
INPUT #F, GESAMTSPIELER, RUNDE, XY, YX, ROUND

' Datei wieder schließen
CLOSE #F

Sollte so klappen... lächeln

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 13.12.2006, 13:07    Titel: Antworten mit Zitat

Hallo!

Mein Test ergab folgendes:

Speichern funktioniert einwandfrei aber beim laden kommt wieder die Fehlermeldung.

Code:

Eingabe nach Dateiende


Mit freundlichen Grüßen
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 13.12.2006, 14:06    Titel: Antworten mit Zitat

Hallo

Lass' mal bei jbs Beispiel in der Zeile PRINT #f, SPIELER$(i), das Komma am Ende weg, Dadurch werden sonst Leerfelder erzeugt, die beim Lesen fälschlicherweise als Dateiende erkannt werden. Dann müsste es gehen.

Code:
' freien Kanal suchen und schreiben
F = FREEFILE
OPEN "STOP.INI" FOR OUTPUT AS #F

' Schreibarbeit sparen
FOR i = 1 TO 15 STEP 1
 PRINT #F, SPIELER$(i),  <----------------------------- Dieses Komma weglassen
NEXT i
PRINT #F, SPIELER$(Q)
PRINT #F, GESAMTSPIELER, RUNDE, XY, YX, ROUND


Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 14.12.2006, 00:53    Titel: Antworten mit Zitat

Hallo!

Es geht immer noch nicht.

Die Daten die aus der Datei gelesen werden sind 0 oder haben den Wert 0!

Wo liegt der Fehler?

Mit freundlichen Grüßen
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

BeitragVerfasst am: 14.12.2006, 02:10    Titel: Antworten mit Zitat

Hallo

Das Beispiel von jb funktioniert bei mir einwandfrei wenn ich das Komma weglasse und noch ein DIM spieler$(15) davorsetze. Und da werden ja auch Nullen und leere Strings geschrieben. Wenn ich das richtig verstanden habe, willst du Daten von einem zum anderen Programm übertragen. Liegen die denn im selben Verzeichnis? Wenn nicht, musst du noch entsprechende Pfadangaben machen.

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 14.12.2006, 02:55    Titel: Antworten mit Zitat

Hallo!

Ich bring das Ding nicht zum laufen!

Immer wieder leer. Haben also den Wert 0.

Ja, Daten von einem Programm zum anderen.

Mal sehen ob ich einen Fehler finde!

Mit freundlichen Grüßen
ALWIM

edit:

LADEN
Code:

DECLARE SUB CPRINT (FFTEXT$, FFHEIGHT!, FFWIDTH!, FFCOLOR1!, FFCOLOR2!, FFCOLOR3!)
SCREEN 12: DEFINT Z
WIDTH 80, 60
REM DIM SPIELER$(15)

'So sollte das funktionieren... Zum Laden dann also:
'Code:

' freien Kanal suchen und schreiben
F = FREEFILE
OPEN "STOP.INI" FOR INPUT AS #F

' Schreibarbeit sparen

LOCATE 1, 1: PRINT GESAMTSPIELER, RUNDE, XY, YX, ROUND

REM GESAMTSPIELER = 5
REM RUNDE = 5
REM ROUND = 1
REM XY = 53
REM YX = 30

FOR i = 1 TO 15 STEP 1

INPUT #F, SPIELER$(i)
NEXT i
INPUT #F, SPIELER$(Q)
INPUT #F, GESAMTSPIELER, RUNDE, XY, YX, ROUND

' Datei wieder schlieáen
CLOSE #F


SPEICHERN

Code:

PLAYE:
FELT 220, 60, 619, 420, 0

 REM GOTO 100

' freien Kanal suchen und schreiben
F = FREEFILE
OPEN "STOP.INI" FOR OUTPUT AS #F

' Schreibarbeit sparen
FOR i = 1 TO 15 STEP 1
 PRINT #F, SPIELER$(i)
NEXT i
PRINT #F, SPIELER$(Q)
PRINT #F, GESAMTSPIELER, RUNDE, XY, YX, ROUND

' Datei wieder schlieáen
CLOSE #F
REM RETURN
REM SHELL "C:\STOP2.EXE"

_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 14.12.2006, 16:44    Titel: Antworten mit Zitat

Du solltest Pfadangaben verwenden, und da liegt auch der Fehler. Ein
Code:
OPEN "STOP.INI" FOR ...

bringt nichts, da dein Programm nicht im aktuellen Verzeichnis liegen muss. Ein
Code:
OPEN "C:\Ordner\STOP.INI" ...

ist da besser und viel weniger fehleranfällig.

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 14.12.2006, 22:30    Titel: Antworten mit Zitat

OMG BLOSS NICHT NEIN!!!! KEINE ABSOLUTEN PFADE!
Das zwingt ja den user wieder, sein programm in ein bestimmtes verzeichnis zu kopieren. und wenn es etwas gibt, das ich hasse, dann ist es das. denn auf meiner festplatte hat alles seine ordnung.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 15.12.2006, 01:57    Titel: Antworten mit Zitat

Hallo!

Jetzt klappt es so wie ich will.

Nun kann ich auch eine Abspeichern Routine programmieren.

Mit freundlichen Grüßen
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. 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