/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
ObjectPascal
Fra : Newbiing Mee


Dato : 14-11-02 14:38

Hej!

Jeg er lidt i tvivl om, hvad denne ObjectPascal funktion gør/udretter:::


FUNCTION InWord (x,y: BYTE) : WORD;
{ Denne funktion udfører.....}
{ WORD er en indbygget taltype med domænet 0-65535 }
CONST
EOL = CHR (13); {Retur-tastens tegnværdi }
VAR
ch : CHAR;
value : WORD;
BEGIN
GoToXY (x, y);
ClrEol;
value := 0;
REPEAT
REPEAT
ch := ReadKey;
UNTIL (ch IN ['0'..'9']) OR (ch=EOL);
IF ch<>EOL THEN
BEGIN
Write (ch);
value := value*10 + (ORD(ch)- ORD('0'));
END;
UNTIL ch=EOL;
InWord := value
END;


--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG

 
 
Olav M.J. Christians~ (14-11-2002)
Kommentar
Fra : Olav M.J. Christians~


Dato : 14-11-02 21:13

"Newbiing Mee" <lasse@biha.dk> skrev i en meddelelse
news:5582895aea02dbbf927996ec0e2f3154.113715@mygate.mailgate.org...
> Hej!
>
> Jeg er lidt i tvivl om, hvad denne ObjectPascal funktion
gør/udretter:::
>
>
> FUNCTION InWord (x,y: BYTE) : WORD;
> { Denne funktion udfører.....}
> { WORD er en indbygget taltype med domænet 0-65535 }
> CONST
> EOL = CHR (13); {Retur-tastens tegnværdi }
> VAR
> ch : CHAR;
> value : WORD;
> BEGIN
> GoToXY (x, y);
> ClrEol;
> value := 0;
> REPEAT
> REPEAT
> ch := ReadKey;
> UNTIL (ch IN ['0'..'9']) OR (ch=EOL);
> IF ch<>EOL THEN
> BEGIN
> Write (ch);
> value := value*10 + (ORD(ch)- ORD('0'));
> END;
> UNTIL ch=EOL;
> InWord := value
> END;
>

Det ligner en indtastningsrutine til en lommeregner ell. lign. Det vil
sikkert kunne køre på Turbo Pascal (og sikkert også under Delphi som en
konsol-applikation hvis det bliver omskrevet en smule).

Funktionen placerer en tekstcursor der hvor du angiver det ved x,y og
venter derefter på at du indtaster et af cifrene 0 til 9 eller afslutter
med Enter. Cifrene bliver vist et efter et når du trykker på en af
nummertasterne. Når du afslutter med Enter, har du i 'value' værdien af
det tal du indtastede (dog så vidt jeg kan se i omvendt rækkefølge, dvs.
du starter med at indtaste etterne, dernæst tierne, hundrede osv.).

--
M.v.h.
Olav
http://www.experit.dk
Fjern intet for at skrive til mig



René Allan Larsen (15-11-2002)
Kommentar
Fra : René Allan Larsen


Dato : 15-11-02 00:13

In article <5582895aea02dbbf927996ec0e2f3154.113715@mygate.mailgate.org>,
Newbiing Mee wrote:
> Hej!
>
> Jeg er lidt i tvivl om, hvad denne ObjectPascal funktion gør/udretter:::

Uden at jeg har kørt den, ser det ud til at det er et naivt forsøg på at
lave en idlæsning af et heltal, hvor det ikke er muligt at indtaste andet
endcifre. Grunden til at jeg siger det er et *naivt* forsøg er, at der
ikke tjekkes om det indtastede tal bliver større end tilladt i en
WORD-variabel.

MVH, René



TheHawk (17-11-2002)
Kommentar
Fra : TheHawk


Dato : 17-11-02 02:19

Hejsa

> REPEAT
> REPEAT
> ch := ReadKey;
> UNTIL (ch IN ['0'..'9']) OR (ch=EOL);
> IF ch<>EOL THEN
> BEGIN
> Write (ch);
> value := value*10 + (ORD(ch)- ORD('0'));
> END;
> UNTIL ch=EOL;
> InWord := value

Som allerede svaret indlæser den et positivt heltals værdi i en consol
applikation. Det er sikret at kun tegn (cifre) mellem 0 og 9 bliver
accepteret. Fremgangsmåden er så, at allerede indtastede tal bliver ganget
med 10 og det indtastede tal bliver lagt til. I sig selv smart nok. Dette
forsætter indtil der trykkes enter (EOL). Som nævnt burde have været være
indbygget et check så programmet ikke fejler hvis det indtastede tal
overstiger begrændsningen af et Word, dvs max 65535. Det kunne være lavet
smarterer med en ReadLn og Val. Dette ville dog kræve en genindtastning ved
fejl. Det formodes dog at det benyttede sprog ikke er Delphi da ingen GotoXY
findes i dette. Ej heller findes ReadKey. Jeg kender ikke Turbo Pascal men
vil tro der er sproget der her er benyttet. Håber det bringer lys over
problemet.

-Carsten Sonne Larsen
thehawk@thehawk.dk




Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408846
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste