 |
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 |
Wurm
Anmeldungsdatum: 30.10.2005 Beiträge: 16
|
Verfasst am: 04.12.2005, 11:55 Titel: error Behandlung |
|
|
Hallo zusammen,
ich suche die Liste mit den Fehlernummer, kann sie aber niergends finden.
Mein zweites Problem ist den Fehler abzufangen. Es funktioniert nicht mehr wie bei QB.
Im Detail versuche ich, wenn eine Datei die nicht vorhanden ist, und dennoch versucht wird diese zu öffnen, ein Programmabsturz zu vermeiden. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.12.2005, 12:25 Titel: |
|
|
versuch doch mal, OPEN als funktion zu benutzen..
rückgabe=open("bla.txt" for ouput as #1)
oder so ähnlich, schau halt ma in der referenz. _________________ "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 |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 04.12.2005, 15:07 Titel: |
|
|
Die Fehlercode liste von QB und FB sind nicht identisch!
keywords.txt hat Folgendes geschrieben: | ...
ERR Function (diff: error numbers are not the same as in QB)
... |
_________________ 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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 04.12.2005, 15:27 Titel: |
|
|
@Wurm:
Schau mal unter 'Attribute unter FreeBasic ändern' nach, da habe ich einen Funktionsaufruf zum Ermitteln von DateiAttributen gepostet:
Kein Attribut(-1)==> keine Datei
Ich hoffe, das hülft
Schönen 2.Advent
ytwinky
[Edit]
Hier der Link: http://forum.qbasic.at/viewtopic.php?t=1754 _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO..
Zuletzt bearbeitet von ytwinky am 02.02.2006, 14:14, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 04.12.2005, 16:52 Titel: |
|
|
Schaut mal in der Referenz unter OPEN/Funktion: Da sind ein paar Fehlernummern.
Link:
http://fb.exp-soft.de/Referenz.php?zeig=tuts&col1=a0d5d0&ref=yes&show=OPEN#2
Auszug:
FB-Befehlsreferenz, Eintrag OPEN (Funktion) hat Folgendes geschrieben: | 0 Kein Fehler
1 Unzulässinger Funktionsaufruf
2 Datei nicht gefunden
3 Ein/Ausgabefehler
4 Kein freier Speicher
5 Ungültiges Ergebnis |
Diese Fehlernummern betreffen nur die Datei-Aufgaben, denke ich. Syntax-Fehler (z.B. For ohne Next) werden sowiso von vornhe herein abgefangen, und benötigen deshalb keine eigene Nummer.
Auch Dinge wie ungültiger Index (beim Zugriff auf Arrays) werden derzeit vom Compiler noch nicht erkannt; es ist inzwischen schon allgemein bekannt, dass diese Zeilen KEINEN Fehler erzeugen:
Code: | DIM Array(1 To 5)
? Array(6) |
(um so etwas auszuschließen, kann mit der Compileroption -exx gearbeitet werden; allerdings wird auch hier kein Fehlercode erzeugt, lediglich die compilation wird abgebrochen)
Letztenendes sind auch viele mathematische Fehlercodes, wie z.B. Division durch null "herausgeflogen"; a = 5 / 0 bewirkt lediglich, dass a mit dem Wert 0 belegt wird.
Das macht ein debugging schwieriger, aber letzenendes muss es auch sehr schwierig sein, diese Dinge tatsächlich umzusetzen.
Möglicherweise gibt es auch eine ganze menge "unbekannter" fehlernummern, die sich bis jetzt nur noch nicht herumgesprochen haben.
Mit einem Programm dieser Form:
Code: | DIM errNr As Integer
' Code, der theorethisch einen Fehler erzeugt
errNr = ERR
? errNr
SLEEP |
Ließen sich solche Dinge aufdecken. Wenn jemand Zeit hat, könntet ihr das mal ausprobieren?
Die ergebnisse würden dann mit dem nächsten Referenz-Update erscheinen. Ob das eine eigene Seite für die Fehler wird, oder nur ein Unterkapitel im Eintrag ERR hängt davon ab, wie ausführlich die Ergebnisse sind.
Danke.
Have a nice day
Ciao
Dusky Joe _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 04.12.2005, 20:32 Titel: |
|
|
Also ich Bastle mal was :
a=log(0)
Errornummer 0
a=log(-9)
Errornummer 0
(Scheinbar sing Ungültige Mathe Operation kein Fehler ...)
data "1","2"
read a
read b
read c
Errornummer 0
Ich hab das Gefühl, das die Fehlerbehandlung nur Datei Operatienen umfasst ...
Naja ... _________________ 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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 04.12.2005, 20:54 Titel: |
|
|
Hi AlleMann,
ich habe auch mal ein wenig gebastelt(freeBASIC&Batch):
PIII1k hat Folgendes geschrieben: | Laufzeitfehler Meldung
1 illegal function call
2 file not found
3 file I/O error
4 out of memory
5 illegal resume
6 out of bounds array access
7 null pointer access
8 no priviledges
9 "interrupted" signal
10 "illegal instruction" signal
11 "floating point error" signal
12 "segmentation violation" signal
13 "termination request" signal
14 "abnormal termination" signal
15 "quit request" signal
ab hier(bei ~14286 habe ich abgebrochen) kommt nur noch:
nr at line: 6
Btw: Fehlermeldung 8 ist falsch geschrieben
der korrekte Plural von privilege ist
privileges, aber was hilfts.. |
Viel Spaß beim Nachprüfen
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 04.12.2005, 22:26 Titel: |
|
|
ich habe bei mir selbst festgestellt, dass FB zu einem schlechten programmierstil führt.
In VB hab ich für fast jede sub eine eigene fehler-behandlung (was da auch geht, in verbindung mit on error resume next)...in meinem spiel Fruit Battle gibts keinen Fehlerbehandler. in der qb-version von dem spiel gab's einen. Wenn ein fehler auftritt, isses halt futsch. _________________ » 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: 05.12.2005, 19:39 Titel: |
|
|
Das ist aber kein Problem von FB!!!!
Ich kann in jeder Sprache für einen Außenstehenden völlig unverständlichen Programmcode schreiben. Ich bin sicher, daß ich noch nicht enmal mehr die Programme (auf Anhieb!) fehlerfrei lesen könnte, die ich vor 20 Jahren für meinen ScheiderCPC geschrieben habe. Es ist Spaghetti-Code allererster Güte. Auch C(++) kann dazu verführen, derart verschlüsselte Programme zu erstellen, die nur 'Eingeweihte' verstehen!
Das Einzige, was da hilft, ist Selbstdiszplin
Aber ich gebe zu, daß es viiieeel bequemer ist, das '?' zu verwenden, als immer 'Print' zu tippeln. Nur, wer nicht weiß, das beides dasselbe macht, findet ggfs. keine Ausgabeanweisungen im Programm..
Solange du mit deinen Programmen zurechtkommst, ist es okay..
..wenn du dich über deinen Programmierstil ärgerst, ändere ihn.
Das ist aber nur (m)eine Meinung, schließlich darf jeder so programmieren, wie er möchte
[Edit]
Auch ich
[/Edit]
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 |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 05.12.2005, 19:50 Titel: |
|
|
Also "?" statt "Print" ist kein schlechter Programmierstil.
Auch ich hab zwischen durch einen Schlechten Programmierstil, z.B. auf dem Taschenrechner ...
Prinzipil steigt die Qualität meines Quellcodes mit Entwicklungsdauer und grösser des Projektes bei mir an, mit anderen Worten: Bei klein Projekten Pfusche ich ab und zu damit's einfacher geht . _________________ 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 |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 05.12.2005, 20:12 Titel: |
|
|
Hi,
aus der fbc-v0.15b-src.zip (error.bas)
Code: | dim shared warningMsgs( 1 to FB_WARNINGMSGS-1 ) as FBWARNING = _
{ _
( 0, "Passing scalar as pointer" ), _
( 0, "Passing pointer to scalar" ), _
( 0, "Passing different pointer types" ), _
( 0, "Suspicious pointer assignment" ), _
( 0, "Implicit conversion" ), _
( 0, "Cannot export symbol without -export option" ), _
( 0, "Identifier's name too big, truncated" ), _
( 0, "Literal number too big, truncated" ), _
( 0, "Literal string too big, truncated" ) _
}
dim shared errorMsgs( 1 to FB_ERRMSGS-1 ) as zstring * 128 => _
{ _
"Argument count mismatch", _
"Expected End-of-File", _
"Expected End-of-Line", _
"Duplicated definition", _
"Expected 'AS'", _
"Expected '('", _
"Expected ')'", _
"Undefined symbol", _
"Expected expression", _
"Expected '='", _
"Expected constant", _
"Expected 'TO'", _
"Expected 'NEXT'", _
"Expected identifier", _
"Internal: Tables Full!", _
"Expected '-'", _
"Expected ','", _
"Syntax error", _
"Element not defined", _
"Expected 'END TYPE' or 'END UNION'", _
"Type mismatch", _
"Internal!", _
"Parameter type mismatch", _
"File not found", _
"Illegal outside of FOR, DO, SUB or FUNCTION", _
"Invalid data types", _
"Invalid character", _
"File access error", _
"Recursion level too depth", _
"Expected pointer", _
"Expected 'LOOP'", _
"Expected 'WEND'", _
"Expected 'THEN'", _
"Expected 'END IF'", _
"'END' without IF, SELECT, SUB or FUNCTION", _
"Expected 'CASE'", _
"Expected 'END SELECT'", _
"Wrong number of dimensions", _
"'SUB' or 'FUNCTION' without 'END SUB' or 'END FUNCTION'", _
"Expected 'END SUB' or 'END FUNCTION'", _
"Illegal parameter specification", _
"Variable not declared", _
"Variable required", _
"Illegal outside a compound statement", _
"Expected 'END ASM'", _
"SUB or FUNCTION not declared", _
"Expected ';'", _
"Undefined label", _
"Too many array dimensions", _
"Expected scalar counter", _
"Illegal outside a SUB or FUNCTION", _
"Expected dynamic array", _
"Cannot return fixed-len strings from functions", _
"Array already dimensioned", _
"Illegal without the -ex option", _
"Type mismatch", _
"Illegal specification", _
"Expected 'END WITH'", _
"Illegal inside a SUB or FUNCTION", _
"Expected array", _
"Expected '{'", _
"Expected '}'", _
"Too many expressions", _
"Expected explicit result type", _
"Range too large", _
"Forward references not allowed", _
"Incomplete type", _
"Array not dimensioned", _
"Array access, index expected", _
"Expected 'END ENUM'", _
"Cannot initialize dynamic arrays", _
"Invalid bitfield", _
"Too many parameters", _
"Macro text too long", _
"Invalid command-line option", _
"Cannot initialize dynamic strings", _
"Recursive TYPE or UNION not allowed", _
"Array fields cannot be redimensioned", _
"Identifier cannot include periods", _
"Executable not found", _
"Array out-of-bounds", _
"Missing command-line option for", _
"Math overflow", _
"Expected 'ANY'", _
"Expected 'END SCOPE'", _
"Illegal inside a SCOPE block", _
"Cannot pass an UDT result by reference", _
"Ambiguous call to overloaded function", _
"Division by zero", _
"Cannot pop stack, underflow" _
} |
also jede Menge Fehlermeldungen  _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Dusky_Joe

Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 10.12.2005, 13:10 Titel: |
|
|
@ yTwinky:
Vielen Dank für diese Liste! Genau das, was wir alle gesucht haben!
Wird - wie versprochen - bei ERR eingefügt.
@ Jojo:
Unter FB kannst du deine Fehlerbehandlungsroutinen genauso wie unter QB oder VB schreiben. ON ERROR bzw. ON LOCAL ERROR existieren nach wie vor noch.
Das einzige, das sich geäntert hat, ist die Anzahl der festgelegten Fehlernummern; du musst dir deine Fehler selbst definieren.
Beispiel, wie man das "Division by Zero"-Event abprüfen kann:
Code: | ENUM PrivateErrors
ERR_Div_By_Zero = 1000
ERR_Device_Not_Ready
...
END ENUM
SUB foo
ON LOCAL ERROR GOTO fooError
...
c = a / b
IF b = 0 THEN ERR = ERR_Div_By_Zero
...
GOTO EndOfFoo
' bzw: EXIT SUB, wird wohl lieber gesehen als das Ugly Goto...
fooError:
SELECT CASE ERR
CASE ERR_Division_By_Zero
...
CASE ....
END SELECT
RESUME
EndOfFoo:
END SUB |
Ja, das macht etwas mehr arbeit, kann aber auch ganz praktsich sein.
Btw: Wie du siehst, beginnen die PrivateErrors hier erst bei 1000. Das hat den zweck, dass sie sich nicht mit evtl bestehenden Fehlern schneiden. Du könntest zwar auch bei 16 beginnen, denn nach yTwinky's Liste wäre das die erste freie Fehlernummer, aber du weißt ja nicht, welche Fehlernummern in den zukünftigen Versionen von FB dazukommen.
Anyway, in der Stilfrage vertrete ich die selbe Meinung wie yTwinky: Selbstdisziplin.
@ volta:
Interessant! Zwar keine ERR-Fehlermeldungen, aber durchaus gut zu wissen.
Ich hab mir den Codeauszug mal notiert, und werds mit Mecki besprechen, ob wir dafür auf seiner Site Verwendung haben. Es sieht allerdings so aus, als wären das hauptsächlich die ganzen Syntax-Errors, die in Zusammenhang mit ERR weniger bedeutung haben.
Anyway, gute Arbeit!
Have a nice day
Ciao _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 10.12.2005, 15:04 Titel: |
|
|
Hi, stimmt,
das waren die Fehlermeldungen des FBCompilers.
Die Err-Meldungen sind wie ytwinky ermittelt hat:
Code: | static const char *error_msg[] = {
"", /* FB_RTERROR_OK */
"illegal function call", /* FB_RTERROR_ILLEGALFUNCTIONCALL */
"file not found", /* FB_RTERROR_FILENOTFOUND */
"file I/O error", /* FB_RTERROR_FILEIO */
"out of memory", /* FB_RTERROR_OUTOFMEM */
"illegal resume", /* FB_RTERROR_ILLEGALRESUME */
"out of bounds array access", /* FB_RTERROR_OUTOFBOUNDS */
"null pointer access", /* FB_RTERROR_NULLPTR */
"no priviledges", /* FB_RTERROR_NOPRIVILEDGES */
"\"interrupted\" signal",
"\"illegal instruction\" signal",
"\"floating point error\" signal",
"\"segmentation violation\" signal",
"\"termination request\" signal",
"\"abnormal termination\" signal",
"\"quit request\" signal"
}; |
Gruß
Volta _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 10.12.2005, 17:28 Titel: |
|
|
@Dusky_Joe
Zitat: | Code: | ...
c = a / b
IF b = 0 THEN ERR = ERR_Div_By_Zero
... |
|
Die Reihenfolge ist etwas Skurril gewählt, denn hier tritt der Fehler auf und wird dann Behandelt, dabei könnte man den Fehler Vorher abfangen:
Code: | ...
IF b = 0 THEN ERR = ERR_Div_By_Zero
c = a / b
... |
Was bei der Divison nicht schlimm ist, kann bei der Array behandlung deutliche folgen haben, wie zum Beispiel Überläufe (gegen so was ist Freebasic nicht gesichert), dann kann es sogar sein das Programm Code überschrieben wird womit die Fehlerbehandlung nicht mehr greift. _________________ 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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 10.12.2005, 21:50 Titel: |
|
|
@volta:
schönen Dank für die Blumen, kannst du vielleicht auch sagen, wo im Quelltext von FB das versteckt ist(bei den Compiler-Meldungen hast du das ja gemacht). Naja, die Schleife lief sowieso neben einem anderen Projekt(ich muß bei Freecell auf 80% Gewinne kommen), aber ich habe es dann abgebrochen, um zu sehen, was nun dabei rausgekommen ist..
Viele Grüße
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: 11.12.2005, 12:28 Titel: |
|
|
Hi,
man soll immer die Quellen angeben, ...tschuldigung
der Auszug ist aus libfb-v0.15b-src.zip (libfb_error.c). _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 11.12.2005, 13:06 Titel: |
|
|
Hi volta,
als ich mein Fehlermeldungssuchprogramm geschrieben habe, hatte ich den
Quellcode vom Compiler sowieso noch nicht, deshalb habe ich gefragt..
Zeigt eigentlich der Hilfe-Link bei dir in der sig immer auf die neueste Version der (englischen) Hilfe?
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 |
|
 |
|
|
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.
|
|