 |
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 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 02.05.2006, 15:17 Titel: Eingabefehler abfangen.. |
|
|
Hi,
frei nach Murphy läßt sich ein Programm nicht gegen alle möglichen Eingabefehler absichern..
Ein paar Vorkehrungen lassen sich jedoch treffen. Leider liefert die Funktion Val(AnyString$)
als Ergebnis 0, wenn der String unzulässige Zeichen enthält, aber auch, wenn der String wirk-
lich 0 ist(z.B.: "&b0000000000000000000"), das ist kein Kriterium dafür, ob ein Fehler vorliegt.
Bis jetzt!
Meine Function NumericError(EingabeString) liefert die Position des fehlerhaften Zeichens
bzw. 0, wenn kein Fehler vorliegt..
(sogar mit invertiertem Text..)
[Edit]
jetzt gehts..
Wieso???
[/Edit]
Viel Spaß beim Ausprobieren
ytwinky _________________
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 09.07.2007, 18:36, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 02.05.2006, 16:19 Titel: |
|
|
Ach, habe ich das auch in nopaste gestellt?
Im Ernst: Ich hab' gedacht, ich kann da nur bis 2Kb reinstellen
oder zerwechsel ich da jetz was??
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 |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 02.05.2006, 16:41 Titel: |
|
|
nopaste hat direkthighlighting, wenn du die datei bei dir aufm server löschst ist sie im nopaste auch nicht mehr erreichbar. Das teil geht einfach hin, läd die von deinem server und zeigt sie gehighlighted an, wenn du sie auf deinem server änderst ist sie im nopaste auch geändert. ganz einfach  _________________ "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 |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 02.05.2006, 17:25 Titel: |
|
|
Gute Idee!
Hier einige weitere Ideen:
Du könntest , gleichbedeuten mit . machen
(Tipp am Rande: Eigentlich gehört es zu "Projektvorstellungen") |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 02.05.2006, 21:23 Titel: |
|
|
das wird aber von val nicht richtig angenommen, print val("1,5") gibt nur 1 aus, bei dem , schneidet er das ganze ab. das müsstest du eh ersetzen, dann kannste das auch vor der überprüfung machen. _________________ "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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 02.05.2006, 21:59 Titel: |
|
|
Stop, Stop Stop..
Ich weiß genau, was Michael meint..
Ich hatte in einer ersten Version von NumericError auch eine Umwandlung von Potenzen eingebaut. NumericError hätte dann z.B. 2^31 umgewandelt
in die entsprechende DezimalZahl. Da s$ aber byRef übergeben wird, ginge
der EingabeString flöten, also habe ich es gelassen..
Nun zum ',': Sicherlich habe ich daran gedacht, bin aber nicht wirklich betroffen, da ich bei mir auf dem Ziffernblock kein Komma mehr habe(Registry Wizard sei Dank..)
Wie bei den Potenzen, habe ich mich dazu entschieden fertige Strings zu bewerten und als einzige Umwandlung die in GroßBuchstaben zuzulassen..
(Ähm, Geheimnis: Irgendwo in meinem Hinterkopf geistert noch eine eigene
Input-Routine herum, die sollte sowas dann erledigen..)
Aber ich denke drüber nach
Zement mal
[Edit]
Hätte ich nie gedacht, daß ich das auch mal schreiben darf:
@Michael Frey:
..fixed
Wichtig ist dabei, daß die Eingabezeile geändert wird!!!
Statt Input "blabla", s$
Muß es jetzt heißen: LINE Input "blabla", s$
wg. Input liest ',' als DatenTrenner, für die dies nicht wußten
@MisterD:
Ich bin begeistert, die Änderung klappt ja wirklich..
[Edit2]
Ich habe als 2.(wahlfreien)Parameter comma$="," eingefügt.
So kann die Komma-Auswertung durch Übergabe von "." abgeschaltet werden
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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 09.07.2007, 17:35 Titel: |
|
|
Hi,
eigentlich dachte ich, NumericError wäre fertig..
..aber nach Murphy ist ein Programm ja nie fertig
Egal, ich habe mal alle unnötigen Mid()-Aufrufe in NumericError entfernt und
dabei auch gleich einen 'Fehler' berichtigt:
NumericError ließ die Eingabe von 4E ohne Fehlermeldung duchgehen,
das ist zwar irgendwo richtig(4E=~4E0 und damit 4) es kann aber auch sein, daß &h4E gemeint war, jedenfalls ist das jetzt behoben und NumericError meldet nun einen Fehler..
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.
|
|