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:

error 4 und error 16 im FreeBASIC 1.01.0 win32 Compiler

 
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
LieberKiffer



Anmeldungsdatum: 16.04.2016
Beiträge: 1
Wohnort: Hadamar-Oberweyer

BeitragVerfasst am: 16.04.2016, 14:45    Titel: error 4 und error 16 im FreeBASIC 1.01.0 win32 Compiler Antworten mit Zitat

error 4 und error 16 im FreeBASIC 1.01.0 win32 Compiler

Ich habe etliche alte GW-Basic, QBasic, QB und Basic60 Programme, welche ich mit einem alten Compiler alle unter 32-Bit Betriebssystemen als EXE-Datei ausführen konnte. Alles noch unter MS-DOS bzw. in der DOS-Box lächeln

Auf 64-Bit Systemen laufen weder die alten Interpreter (*.BAS) noch die kompilierten Programme (*.EXE). Also habe ich Alternativen gesucht und bin auf FreeBasic aufmerksam geworden. Mit dem Parameter -lang QB kann ich die meisten Programme kompilieren und sie laufen dann auch unter 32 und 64 Bit. Kleine Unschönheiten sind meistens schnell zu beheben wie z.B. "CLEAR" geht nicht mehr, doppelte Fragezeichen bei "LINE INPUT" oder ähnliches. Für die Sound-Programmierung suche ich auch noch Ersatz für den SOUND und den PLAY Befehl.

Bei meinem aktuellen Projekt komme ich jedoch nicht weiter. Folgende Fehler machen mir zu schaffen:

error 4: Duplicated definition, FIELD
error 16: Expected ','


Hier die kompletten Fehlermeldungen des FreeBasic Compilers . . .
------------------------------ SCHNIPP ------------------------------
LIFE.BAS(207) error 4: Duplicated definition, FIELD
10452 FIELD #1, 4 AS BUFF$
^
LIFE.BAS(209) error 16: Expected ','
10470 GET #1, 1
^
LIFE.BAS(214) error 4: Duplicated definition, FIELD
10492 FIELD #1, 2 AS BUFF$
^
LIFE.BAS(215) error 16: Expected ','
10500 GET #1, 3
^
LIFE.BAS(219) error 16: Expected ','
10510 GET #1, 4
^
LIFE.BAS(223) error 16: Expected ','
10520 GET #1, 5
^
LIFE.BAS(230) error 16: Expected ','
10544 GET #1, (J% - 1) * ANZ% + I% + 5
^
LIFE.BAS(237) error 4: Duplicated definition, FIELD
10562 FIELD #1, 4 AS BUFF$
^
LIFE.BAS(238) error 16: Expected ','
10570 LSET BUFF$ = MKS$(G!): PUT #1, 1
^
LIFE.BAS(241) error 4: Duplicated definition, FIELD
10592 FIELD #1, 2 AS BUFF$
^
LIFE.BAS(241) error 132: Too many errors, exiting
------------------------------ SCHNAPP ------------------------------
Wegen der Proportionalschrift sind die "^" Markierungen hier verschoben. Am besten diesen Teil rauskopieren und in einem Editor z.B. mit Courier formatieren. die Markierungen stehen auf den ersten Buchstaben des Wörtchens "FIELD" und ganz am Ende auf die Datensatz-Nummer "GET" Befehle.

. . . und hier den relevanten Ausschnitt aus meinem Programm (sehr alt, deshalb noch mit Zeilennummern)
------------------------------ SCHNIPP ------------------------------
10450 OPEN "R", #1, "LIFE.DAT", 4
10452 FIELD #1, 4 AS BUFF$
10460 IF LOF(1) = 0 THEN GOSUB 20420: GOTO 10550
10470 GET #1, 1
10472 G! = CVS(BUFF$)
10474 G9! = G!
10480 CLOSE #1
10490 OPEN "R", #1, "LIFE.DAT", 2
10492 FIELD #1, 2 AS BUFF$
10500 GET #1, 3
10502 ANZ% = CVI(BUFF$)
10504 LOCATE 7, 30
10506 PRINT MID$(STR$(ANZ%), 2); SPACE$(4 - LEN(STR$(ANZ%)))
10510 GET #1, 4
10512 PIXEL% = CVI(BUFF$)
10514 LOCATE 8, 30
10516 PRINT MID$(STR$(PIXEL%), 2); SPACE$(4 - LEN(STR$(PIXEL%)))
10520 GET #1, 5
10522 GEN% = CVI(BUFF$)
10524 LOCATE 10, 31
10526 PRINT MID$(STR$(GEN%), 2); SPACE$(3 - LEN(STR$(GEN%)))
10530 GOSUB 1260
10540 FOR J% = 1 TO ANZ%
10542 FOR I% = 1 TO ANZ%
10544 GET #1, (J% - 1) * ANZ% + I% + 5
10546 A%(I%, J%) = CVI(BUFF$)
10547 GOSUB 1240
10548 NEXT
10549 NEXT
10550 CLOSE #1: RETURN
10560 OPEN "R", #1, "LIFE.DAT", 4
10562 FIELD #1, 4 AS BUFF$
10570 LSET BUFF$ = MKS$(G!): PUT #1, 1
10580 CLOSE #1
10590 OPEN "R", #1, "LIFE.DAT", 2
10592 FIELD #1, 2 AS BUFF$
10600 LSET BUFF$ = MKI$(ANZ%): PUT #1, 3
10610 LSET BUFF$ = MKI$(PIXEL%): PUT #1, 4
10620 LSET BUFF$ = MKI$(GEN%): PUT #1, 5
10630 FOR J% = 1 TO ANZ%
10632 FOR I% = 1 TO ANZ%
10634 LSET BUFF$ = MKI$(A%(I%, J%))
10635 PUT #1, (J% - 1) * ANZ% + I% + 5
10637 NEXT
10639 NEXT
10640 CLOSE #1: RETURN
------------------------------ SCHNAPP ------------------------------

Ich habe extra die Befehlsverkettungen mit ":" eliminiert und einzelne Programmzeilen daraus gemacht, um das Fehlerprotokoll und das Programm etwas übersichtlicher zu machen. Deshalb ist es keine durchgehende 10er Schrittweite mehr.
_________________
Mit lieben Grüßen
Valentin


Valentin Batlle Heger
-------------------------------------
Schäferstrasse 8
D-65589 Hadamar-Oberweyer
Tel: +49 6433 946000
ePlus: +49 177 5024425
D1: +49 170 1508088
Geo N 50°27'26,12" = 50,457256°
ETRS89: O 8°05'38,98" = 8,094161°
-------------------------------------
mailto:batlle@T-Online.de

>> Es gibt keinen Weg zum Frieden, <<
> der Frieden ist der Weg. (Gandhi) <
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MOD
Fleißiger Referenzredakteur


Anmeldungsdatum: 10.09.2007
Beiträge: 1003

BeitragVerfasst am: 16.04.2016, 15:57    Titel: Antworten mit Zitat

FIELD für Dateien gibt es in FreeBASIC nicht, siehe dazu auch die Referenz unter Unterschiede zu QB. Das muss wohl umgeschrieben und ein Type (UDT) dazu verwendet werden. Da ich mich mit der ursprünglichen Bedeutung von FIELD allerdings nicht sonderlich auskenne, kann dir vielleicht ein anderer Forenteilnehmer dabei helfen.

Der andere Fehler kommt von der Syntax, wie du GET (Datei) verwendest. Er versteht die Zahl nach dem Komma wohl als Position und erwartet dann noch eine Variable nach einem weiteren Komma.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 16.04.2016, 16:24    Titel: Antworten mit Zitat

Wenn ich den Eintrag in der QBasic-Referenz richtig deute, liest du mit FIELD die nächsten x Byte der Datei in einen String. Wenn das so stimmt, kannst du das sehr einfach für FreeBASIC umschreiben:
Code:
tempString$ = SPACE$(4)
GET #1,, tempString$

reserviert einen 4 Byte langen String und liest dann genau diese 4 Byte aus der Datei.
Bitte das zweite Komma bei GET beachten, das ist kein Tippfehler; wie MOD schon geschrieben hat, gibt es da jetzt einen weiteren Parameter.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Lothar Schirm



Anmeldungsdatum: 24.04.2006
Beiträge: 63
Wohnort: Bayern

BeitragVerfasst am: 19.04.2016, 15:35    Titel: Antworten mit Zitat

Mit dem Sound- und Play-Befehl könnte ich vielleicht hiermit dienen: https://www.freebasic-portal.de/downloads/sonstiges/play-in-freebasic-172.html

SOUND geht in Windows ganz einfach:
Code:
#Include "windows.bi"
Beep_(1000, 500) 'Ton 1000 Hz, 500 ms

lächeln
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 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