Add new attachment

Only authorized users are allowed to upload new attachments.

List of attachments

Kind Attachment Name Size Version Date Modified Author Change note
png
forth-string.png 12.4 kB 2 08-Aug-2010 15:36 Carsten Strotmann
png
zero-term-string.png 13.2 kB 1 08-Aug-2010 15:46 Carsten Strotmann

This page (revision-5) was last changed on 08-Aug-2010 15:58 by Carsten Strotmann  

This page was created on 08-Aug-2010 15:29 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Difference between version and

At line 58 added 51 lines
* [asciz]
* [>asciz|to-asciz]
* [counted]
!! Konvertierungen: Strings -- Zahlen
!String in Zahlen wandeln
* [digit?|digit-question]
* [accumulate]
* [convert]
* [number?|number-question?]
* [number]
* [dpl]
Ein Beispiel der Umwandlung von Zeichen in Zahlen:
In FORTH wird die Eingabe von Zahlen oft mit der allgemeinen Texteingabe und über die Befehle zur Umwandlung von Strings in Zahlen realisiert. In der Literatur wird dazu oft diese Lösung mit __QUERY__ angeboten:
{{{
: in# ( string -- d tf n tf addr ff )
query bl word number? ;
}}}
Diese Lösung ist ungünstig, da __QUERY__ den __TIB__ löscht. Zugleich stellt die Definition von __NUMBER?__ eine unglückliche Stelle im volksFORTH dar. Es gibt im Laxen&Perry-F83 ein Wort gleichen Namens, das ganz anders (besser!) mit den Parametern umgeht. Hier folgt die Definition des F83-NUMBER?, das auf dem volksFORTH __NUMBER?__ aufbaut:
{{{
: F83-NUMBER? ( string -- d f )
number? ?dup IF 0< IF extend THEN true exit THEN
drop 0 0 false ;
}}}
Damit stellt das Wort __INPUT#__ eine wenig aufwendige Zahleneingabemöglichkeit für 16/32Bit-Zahlen dar:
{{{
\ input#
: input# ( string -- d f )
pad c/l 1- >expect \ get 63 char maximal
pad F83-number? ; \ convert string->number
}}}
So kann der Anwender das übergebene Flag auswerten und die doppelt-genaue Zahl entsprechend seinen Vorstellungen einsetzen, im einfachsten Fall mit DROP zu einer einfachgenauen Zahl machen.
!Zahlen in Strings wandeln
* [#|number]
* [#s|number-s]
* [hold]
* [sign]
* [#>|number-greater]
Version Date Modified Size Author Changes ... Change note
5 08-Aug-2010 15:58 4.012 kB Carsten Strotmann to previous
4 08-Aug-2010 15:47 2.408 kB Carsten Strotmann to previous | to last
3 08-Aug-2010 15:46 2.354 kB Carsten Strotmann to previous | to last
2 08-Aug-2010 15:34 1.085 kB Carsten Strotmann to previous | to last
1 08-Aug-2010 15:29 1.035 kB Carsten Strotmann to last
« This page (revision-5) was last changed on 08-Aug-2010 15:58 by Carsten Strotmann