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:

Qbasic1.1 --> Qbasic4.5 Prog läuft nicht

 
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
Eastler_dart



Anmeldungsdatum: 25.09.2005
Beiträge: 177
Wohnort: Baden-Würtemberg + Sachsen

BeitragVerfasst am: 26.11.2005, 01:31    Titel: Qbasic1.1 --> Qbasic4.5 Prog läuft nicht Antworten mit Zitat

Mann. So schwer kann das doch nicht sein, oder?
Benutze schon längere Zeit auf nem Alten Lap ein Qbasic-Programm.
Oder besser gesagt, ein ursprüngliches gwbasic-Programm, das ich
nach Qbasic 1.1 portiert hatte.

Soweit so gut.

Nun kam ich auf die Idee, das mal mit dem mittlerweile vorhandenen Qbasic4.5 laufen zu lassen. (Immer Interpretiert, nicht compiliert).
Was soll ich sagen? Qbasic startet, zeigt das Listing.
F5 drücken, Qbasic ist weg, Win98Se meint,
Diese Anwendung wird aufgrund eines unzulässigen Zugriffs beendet
bla bla bla

Auch mit Haltepunkten geht nix los. Einzelschritt hängt sich auf. Boahh.
Das exact gleiche listing mit Qbasic 1.1 (qbasic.exe) eingelesen, F5, es läuft.

Hat schon mal jemand das selbe Problem gehabt? Kann der mir nen Tipp geben, an welcher Ecke ich mit der Fehlersuche anfangen soll?

Wird bestimmt ein deffinierter Unterschied zwischen den beiden Qbasic-Varianten schuld sein, aber welcher?

Klar hab ich noch diejenigen Zeilennummern drin, die als Sprungmarken verwendet werden. Hab auch schon Doppelpunkte dahinter gesetzt, ändert sich nichts.

Auch ein nochmaliges Abspeichern auf neuen Dateinamen mit 4.5 ändert nix.

Danke schon mal im Vorraus für hilfreiche Suchtipps.
_________________
Kaum macht mans richtig, schon geht's
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Yahoo Messenger
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 26.11.2005, 02:03    Titel: Antworten mit Zitat

schafft er die erste zeile? Ansonsten poste die mal..
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 26.11.2005, 08:35    Titel: Antworten mit Zitat

Zu den Zeilennummern:
Ich errinere mich, das die Zeilennummer 0 mir schonmal Probleme gemacht hat.
Hat dein Programm eine Zeile Nummer 0?
Wenn ja, einfach eine andere Nummer benutzen.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Eastler_dart



Anmeldungsdatum: 25.09.2005
Beiträge: 177
Wohnort: Baden-Würtemberg + Sachsen

BeitragVerfasst am: 26.11.2005, 18:17    Titel: Antworten mit Zitat

erst mal Danke für euere Ideen.

Hm. Zeile 0? is nicht, gibts nicht, diese Theorie kann abgehakt werden.

Hm. Schaft er die erste Zeile?
mit dem Kopf durch die Mauer wollen selbst wenn ich die erste Zeile als Haltepunkt markiere geht nix los weinen

Soweit zu euren Postings

Bin aber auch schon ein Stück weiter:

da 4.5 streikt, hab ich mich mal in das Thema Freebasic unter DOS reingezwängt.
Siehe da, damit käm ich ja auch klar.
Als fauler Programmierer hab ich dann FreeBasic als Planschmieder auserkoren:
Das Listing an FreeBasic014b/Win verfüttern und Fehler für Fehler rauseditieren. Da kam einiges zu Tage:
(folgende Tipps für diejenigen, die ein ähnliches Problem lösen wollen)

1) hatte nicht bei jedem Ansprechen einer Variable ein Suffix für den Typ (!%&...)angehängt. mal wars dran, mal nicht. Hierbei meckert Freebasic aber erst mal nur, wenn das Sub-Aufrufe betrifft. Das alles hab ich nu bereinigt (nur die sub-betreffenden Variablennamen)

2) DEF SEG für Bload(Textbildschirm) in Datei kennt Freebasic ja auch nicht. Erst mal als Kommentar inaktiv gestellt. Hab noch keine Lösung dazu, wie Freebasic unter Dos (Keine Grafik) den Anzeigeschirm sichern und restaurieren kann. Tipps hierzu wären super.

3) Da ich Programme mittels einem externen Editor (PhaseV Ulli Meybohm) bearbeite, blieb eine REM-Zeile zwischen
der Letzten Zeile Hauptteil und
dem ersten SUB-Routinen-Anfang
in der Luft hängen. QB4.5 zeigte diese Zeile weder hier noch dort an. Rausgelöscht.

4) QB hatte die Eigenschaft, beim wandeln von Zahlen in Strings mittels STR$() eine Leertaste vornedran zu stellen (für eventuelles Minuszeichen), Freebasic mach das nicht! Und weil ich für die Anzeige solche "zahlenstrings" mittels Bereinigt$=Mid$(STR$(Zahlenstring),2) um die führenden Leerstelle gekürzt hatte, fehlte unter Freebasic dann immer die vorderste Ziffer! drandenken, wenn Ihr auch sowas habt.

Jedenfalls frißt Freebasic nun Brav das Programm, sowohl Win-014B als auch DOS014b. Es läuft aber immer noch nicht richtig. Muß noch RESTLOS alle vorkommenden Variablen mittels Suffix declarieren, scheinbar sind Variable=5 : Variable%=5 für Freebasic zwei total verschiedene Variablen!

HM. Die Hoffnung war ja recht hoch. Wenn FreeBasic zufrieden ist, sollte QB4.5 ja auch zufrieden sein. Is nich weinen Prog stürzt mit F5 ab, win bringt immer noch die Fehlermeldung.

Fahre jetzt zweigleisig:
1) mache mit FreeBasic weiter, damit krieg ich ja auch ne MeinProg.exe hin. Weiß nur noch nicht so recht, wie ich das mit dem Bildschirm sichern/restaurieren machen soll.
2) Falls hier doch noch jemand eine Lösung weiß, dann aktiviere ich QB4.5 wieder.

Viel Spaß beim Grübeln an dieser Nuß mit den Augen rollen vielleicht fällt euch ja noch was dazu ein

Euer Eastler
_________________
Kaum macht mans richtig, schon geht's
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Yahoo Messenger
Thomas Antoni



Anmeldungsdatum: 12.10.2004
Beiträge: 220
Wohnort: Erlangen

BeitragVerfasst am: 26.11.2005, 20:02    Titel: Bezüglich GW-BASIC vs. QBasic steht in der MonsterFAQ... Antworten mit Zitat

Bezüglich GW-BASIC vs. QBasic steht in der QB-MonsterFAQ das Folgende. Vielleicht hilft das weiter

Frage deutsch
~~~~~~~~~~~~~~
Wodurch unterscheidet sich GW-Basic von QBasic?

Question English
~~~~~~~~~~~~~~~
What are the differences between GW-BASIC and QBasic??


Antwort 1
~~~~~~~~~
[ von Thomas Antoni, 17.11.2004 - 11.11.2005 ]

GW-Basic ist der Vorläufer von QBasic. Die Vorteile von QBasic gegenüber GW-BASIC sind enorm. Angefangen bei der komfortablen Bedienungsoberfläche mit Puldown-Menüs und Dialogboxen über den leistungsfähigen Editor bis hin zu den verlässlichen Fehlersuche-Funktionen, dem erweiterten Befehlsumfang und der deutlich höheren Arbeitsgeschwindigkeit sind die Unterschiede so gravierend, dass GW-BASIC mit der Einführung von QBasic der Geschichte angehört. Der scheinbar einzige treffende Vergleich zwischen GW-BASIC und QBasic ist dem nach der wie zwischen einem Fahrrad und einem Auto; mit beiden kommt nam von A nach B ... :-))

GW-Basic ist viel mehr den alten "Bastler-BASIC-Dialekten" verhaftet als das moderne QBasic. Leider haben sich bei den Profis aber viele Vorurteile genenüber BASIC, die auf GW-Basic noch zutrafen, auch auf QBasic "vererbt".

Welche Nachteile hat GW-Basic gegenüber QBasic?

- Es gibt weniger Kontrollstrukturen, z.B. keine DO..LOOP, kein SELECT CASE und mehrzeilige IF-Anweisungen.
Aufgrund dieser nur beschränkten Möglichkeiten für Verzweigungen und Schleifen ist keine wohlstrukturierte Programmierung möglich. Typische GW-BASIC Programme wimmeln daher nur so von GOTO und GOSUB-Befehlen. Das führt unweigerlich zu bdem berüchtigten "Spagetti-Code" und zu unübersichtlichen, schlecht lesbaren und schlecht wartbaren Programmen. Wenn der THEN-Zweig eines IF-Befehls mehrere Befehle umfasst, muss man z.B. zu folgender unschönen Konstruktion greifen: IF Zahl > 120 THEN GOTO 2230 . Denn der IF-Befehl darf sich bei GW-BASIC nur über eine Programmzeile erstrecken.
- Zeilennummern sind zwingend erforderlich, menomotechnische Marken für Sprungziele gibt es nicht.
- Es gibt keine Prozeduren (SUBs, FUNCTIONs), sondern nur lokale Subroutinen (GOSUB...RETURN) und einzeilige Funktionen (DEF FN).
- Der Datentyp LONG (doppelt lange 32-Nit-Ganzzahl) fehlt
- Verbundfelder (TYPE...END TYPE) und Konstanten (CONST) werden nicht unterstützt.
- Die GW-BASIC Entwicklungsumgebung hat keine Mausbedienung, keine Menüführung und nur englische Bedientexte
- Der integrierte Editor arbeitet mehr zeilenorientiert und ist kein Ganzseiten-Editor . Er ist sehr unkomfortabel. Ein Scrollen über mehrere Bildschirmseiten ist z.B. nicht möglich.
- Ein numerischer Gleitpunkt-Coprozessor wird nicht unterstützt
- Eine Online-Hilfe vermisst man schmerzlich. Ohne ein Handbuch ist ein ernsthaftes Programmieren mit GW-BASIC fast nicht möglich


*** Wie kann man GW-BASIC (oder BASICA) Programme nach QBasic portieren?

- Speichere das Programm unter GW-BASIC mit SAVE "programmname.bas", A als reinen ASCII-Text ab, also nicht in dem proprietären GW-Basic-Format
- Ersetze "CALL <Adresse>, <Parameter>" durch "CALL ABSOLUTE"
- Ersetze "DEF USR <Nummer> = <OffsetAdresse>" und "USR <Nummer>" durch das flexiblere "CALL ABSOLUTE"
- In GW-BASIC sind einige unsaubere Programmkonstruktionen möglich, wie z.B. IF X = 0 THEN EXIT . In QBasic muss eine solche Zeile umgeschrieben werden, etwa in diesem Fall durch IF X <> 0 THEN EXIT FOR und NEXT in der nächsten Zeile.
- Schreibfehler (Syntax Errors) in GW-BASIC-Programmen weden nur dann erkannt, wenn die betroffene Anweisung tatsächlich zur Laufzeit ausgeführt wird. Aus diesem Grund verbleiben manchmal auch in einem getesteten GW-BASIC-Programmen noch solche Fehler, wenn ausgerechnet diese Anweisung nicht bei den Tests ausgeführt wurde. In QBasic werden diese Fehler bereits vor dem Programmstart erkannt und müssen beseitigt werden, bevor das Programm überhaupt starten kann.
- Die nicht mehr benötigten Zeilennummern (außer bei Sprungzielen) kannst Du entweder beibehalten oder mit dem QBasic-Programm REMLINE.BAS entfernen (Download auf http://www.qbasic.de unter "Download -> Microsoft" ). Wenn eine Zeilennummer "0" existiert, kann es unter QBasic zu Problemen kommen.


Die meisten GW-BASIC Programme laufen problemlos auch unter QBasic, wenn sie als Text abgespeichert wurden. Weitere Informationen finden Sie im LEXIKON unter -> GW-BASIC .

Ich bin übrigens immer wieder erstaunt, wieviele Leute auch heute noch in GW-BASIC programmieren - wohl aus alter, liebgewordener Gewohnheit. Das respektiere ich, auch wenn ich hier ganz schön über das alte Dampf-BASIC gelästert habe.


*** Die wichtigsten GW-BASIC-Befehle

CLS - Löscht den Bildschirm
END - Bendet das Programm
FOR <Laufvariable> = <Anfangswert> TO <Endwert> ... NEXT <Laufvariable> - Programmschleife (kann sich über mehrere Zeilen erstrecken)
GOSUB <Zeilennummer> - Sprung in ein Unterprogramm, welches mit RETURN abgeschlossen wird
GOTO <Zeilennummer> - Unbedingter Sprung
IF <Bedingung> THEN <Zeilennummer> - Bedingter Sprung (muss in einer Zeile stehen)
IF <Bedingung> THEN... ELSE ... - Verzweigung (muss in einer Zeile stehen)
INPUT <Dialogtext>; <Variable> - Eingabe von Daten in eine Variable
INT (<Zahl>) - Umwandlung einer Kommazahl in eine Ganzzahl
LOCATE <Zeile>, <Spalte> - Positionierung des Cursors auf die angegebene Position
LPRINT - Ausgabe auf den Drucker
ON <Variable> GOTO <Zeilennumer für Variable=1>, <Zeilennummer für variable=2>,... - Mehrfachverzeigung abhängig vom Wert einer Variablen
PRINT <Variable> [; <Variable2>;...] - Bildscharmausgabe von daten
REM - Kommentar im Programm
+ - Addition
- - Subtaktion
* - Multiplikation
/ - Division
^ - Potenzierung


Answer 2
~~~~~~~~~
[ By Microsoft ( http://support.microsoft.com/default.aspx?scid=kb;EN-US;q73084 ), 11.11.2004 ]


SUMMARY
This article lists the improvements in QBasic over GW-BASIC and some of the major differences between the two.

MORE INFORMATION
QBasic is a subset of QuickBasic version 4.5. The QBasic online help feature contains complete articles explaining version differences between BASICA/GW-BASIC and QBasic, unsupported keywords, and converting BASICA programs for use under QBasic.

QBasic provides a "Windows-like" environment supporting the use of a mouse. A menu bar across the top of the screen contains pull-down menu selections.

QBasic provides a split screen. The upper portion of the screen is called the view window and is for program code; at the bottom of the screen, an "immediate" window allows testing of a programming instruction prior to including it in a program.

With QBasic, you don't need to use line numbers. However, line numbers are supported. Also, QBasic now supports line "labels." These labels are not required on every line, however, but can be used to direct program flow. As a result, QBasic has no RENUM command such as that of GW-BASIC. For example:
Line label "Bob:" or line number "10" are both valid.

QBasic includes friendly, extensive online help. For more information about using QBasic, press ENTER immediately after starting QBasic or press F1 any time while running QBasic. If you are using a mouse, point to the Help menu option on the right side of the menu bar (on the top right of the displayed screen).

You can cut and paste examples of program code from the online help screen and place them directly into the view window for execution.

QBasic uses IEEE floating point math, the industry standard. GW-BASIC uses the MBF math format. For more information on IEEE vs. Microsoft Binary Format, query on the following words:
Tutorial and IEEE and MBF QBasic is a subset of QuickBasic 4.5. QuickBasic 4.0 and later will support a math co-processor, however, QBasic does not.

QBasic uses P-code, which stands for "pseudo code," so called because it's very similar to compiled code, but it's not completely compiled. P-code retains just enough information -- the crucial last bits that real machine code loses -- for listing it on the screen in source code format and for any modifications you decide to make. Yet, because it looks almost like the output of a compiler, it runs almost as fast as you would expect an executable file to run. Consequently, you get all the advantages of using an interpreter with virtually no speed penalty and little size penalty.

QBasic supports additional variable types: User-Defined Types, Fixed-Length Strings, and Long Integers.

User-Defined Types
Use the type
If the variable is: declaration character:
------------------- ----------------------

String $
Integer
Regular %
Long &
Floating Point
Single-precision !
Double-precision #

Fixed-Length Strings
A regular integer variable can store any whole number from -32768 through
1. Use "%" to declare regular integers. Example: integer% = 10
To declare a fixed-length string, add a string variable name and a string length to the DIM statement, as follows
DIM strName AS STRING * n

where strName is the name of the fixed-length string and n is the string length.

Long Integers
A long integer variable can represent a whole number from -2,147,483,648 through 2,147,483,647. Use "&" to declare long integers.
Example: employees& = 15000000

Single-precision floating-point variables can represent a number up to seven digits in length. The decimal point can be anywhere within those digits. Use "!" to declare single-precision floating-point variables.
Example: speed!= 33.33333

Double-precision floating-point variables can represent a number up to 15 digits in length. The decimal point can be anywhere within those digits. Use "#" to declare double-precision floating point variables.
Example: pi# = 3.141592654

QBasic allows 64K memory for code per subroutine and 64K for data. Arrays, fixed-length strings, and user-defined types get 64K each. There is 64K of memory available for CODE per SUBroutine and 64K of memory for DATA. You can also have far arrays of numerics, fixed-length strings, and user- defined types of up to 64K each.

QBasic allows error/event trapping:

"ON ERROR GOSUB.../ON KEY(n) GOTO..."

Example:
CALL mysub
END

errhandler:
PRINT "You had an error!"
PRINT "Error" ERR
RESUME NEXT

SUB mysub

ON ERROR GOTO errhandler
ERROR 62

END SUB

QBasic allows variable/value parameter passing. SUB/END SUB and UNCTION/END FUNCTION. QBasic provides a way to share arguments with a limited number of subprograms rather than with the entire program. This method is called passing arguments.

Syntax:
SUB globalname[parameterlist][STATIC]
[statements]
[EXIT SUB]
[statements]
FUNCTION name [parameterlist][STATIC]
[statements]
name = expression

[statements]
END FUNCTION
END SUB

File Conversion from GW-BASIC to QBasic
To use a GW-BASIC program in QBasic, you must first save the file in an ASCII text format.
Example: SAVE: "PROGNAME.BAS",A.

Converting a GW-BASIC Program to QBasic
Use REMLINE.BAS included with MS-DOS for QBasic to remove line numbers from GW-BASIC programs. For more information, see the documentation provided at the beginning of REMLINE.BAS by opening the file in QBasic.

To load GW-BASIC programs to QBasic, you must use the command "QBasic /MBF" when starting QBasic from the DOS prompt.
_________________
+++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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 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