This page (revision-5) was last changed on 03-Feb-2023 15:21 by Carsten Strotmann 

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

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
5 03-Feb-2023 15:21 3 KB Carsten Strotmann to previous
4 08-Aug-2010 13:47 2 KB Carsten Strotmann to previous | to last
3 08-Aug-2010 13:46 2 KB Carsten Strotmann to previous | to last
2 08-Aug-2010 13:34 1 KB Carsten Strotmann to previous | to last
1 08-Aug-2010 13:29 1 KB Carsten Strotmann to last

Page References

Incoming links Outgoing links

Version management

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]