 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
goooofy
Anmeldungsdatum: 12.09.2005 Beiträge: 69
|
Verfasst am: 16.09.2006, 18:58 Titel: Problem mit GET und Random-File... Bug? |
|
|
Hallo,
der folgende Code funktioniert komischerweise unter QBasic problemlos, unter FreeBasic bricht er immer bei GET ab. Ohne Fehlermeldung.
Schreiben und Auslesen einer String-Variablen beliebiger Größe in/aus einer Direktzugriffsdatei mit fester Datensatzlänge:
Code: | CLS
text$ = "hallo"
OPEN "test.dat" FOR RANDOM AS #1 LEN = 12
PUT #1, 2, text$
CLOSE #1
text$ = ""
OPEN "test.dat" FOR RANDOM AS #1 LEN = 12
GET #1, 2, text$ 'Hier bricht FreeBasic ab. Wo liegt der Fehler?
CLOSE #1
PRINT text$
DO: LOOP WHILE INKEY$ = ""
SYSTEM |
Hat jemand eine Idee, wie ich die Daten noch erfolgreich auslesen kann?
Die "test.dat" habe ich ursprünglich mal wie hier exemplarisch dargestellt in QBasic mit Record-Lengh 12 erstellt, sie beinhaltet zig Datensätze die ich nun auslesen will, was unter Qbasic ja auch geht, aber weshalb bei Freebasic nicht? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 16.09.2006, 20:59 Titel: |
|
|
wenn das nicht mehr klappt, würde ich mal binary statt random versuchen. die variable muss dann schon VOR dem auslesen 12 bytes lang sein. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 17.09.2006, 00:11 Titel: |
|
|
Hi goooofy,
villeicht hilft dir das bei deinen Untersuchungen weiter: Code: | 'Ä=Ž , Ö=™ , Ü=š ; ä=„ , ö=”, ü=? , ß=á ,§=õ , ©=¸
Option Explicit
Dim Text$, y
CLS
text$ = "hallo"
? "Vor Open1"
OPEN "test.dat" FOR RANDOM AS #1 LEN = 12
? "Vor Put"
PUT #1, 2, text$
? "Vor Close1"
CLOSE #1
? "<" &text$ &">"
text$ = String(12, " ")
? "Vor Open2"
OPEN "test.dat" FOR RANDOM AS #1 LEN = 12
? "Vor Get"
y=GET(1, 2, text$) 'Hier bricht FreeBasic ab. Wo liegt der Fehler? Falscher Funktionsaufruf!
? "Vor Close2"
CLOSE #1
? "<" &y &">"
? "<" &text$ &">"
PRINT text$
DO: LOOP WHILE INKEY$ = ""
SYSTEM |
Anmerken möchte ich noch, daß 'SYSTEM' KEINE gute Lösung ist(End wäre besser..)
Ein im Forum durchaus üblicher Kommentar ist:
Die DO: LOOP-Schleife sollte besser so aussehen: Code: | Do
Sleep 1
Loop While Inkey="" | Außerdem ist die Verwendung von Binary als Modus vorzuziehen
(Schau in die Befehlsreferenz..)
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 17.09.2006, 12:11 Titel: |
|
|
Hi goooofy,
wie Jojo schon schrieb ist der Fehler in der Stringlänge zu suchen.
Legst du 'text' gleich mit einer Länge von 12 Zeichen an geht es auch mit RANDOM in FB.
Code: | Cls
Dim text As String*12
text = "hallo"
Open "test.dat" For Random As #1 Len = 12
Put #1, 2, text
Print text
text = "xyz"
Print text
Get #1, 2, text
Close #1
Print text
Sleep |
Gruß Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
|
|
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.
|
|