Tilbake til startsida IKT i praksis - Pascal

Meny
 
 
 
 
 
 
 
• Desimalteikn
 
 
 

Problem med komma og punktum

Sidan vi på norsk brukar komma som desimaltikn, blir det av og til konflikt ved bruk av ulike funskjonar og prosedyrar. For eksempel vil funksjonen val(streng,talet,kode) returnere feilmelding dersom talet i inndatastrengen inneheld komma. Dette kan skje dersom verdien blir henta direkte frå for eksempel Edit1.Text. Funksjonen gjer om ein talstreng i variabelen streng til eit tal som blir returnert i talet. Er det ingen feil i omgjeringa, returnerer kode null. Er det feil, blir plasseringa av feilen vist.

For å sikre at inndataane inneheld punktum som desimalskiljeteikn, laga eg denne rutinen:

function settDesimalpuntum(s: String): String;
var
funn: byte;
begin
funn := pos(',',s;
if (funn > 0) then
s[funn] := '.';
result := s;
end;

Når ein kallar opp ein funksjon som krev punktum som desimalteikn, kan ein gjere dette for eksempel slik:

procedure sjekkInnskriving;
var
talet: Single;
feil: Integer;
s: String;
begin
with Form1 do
begin
s := settDesimalpuntum(edtInn.Text);
val(s,talet,feil);;
if (feil <> 0) then edtInn.Text := '0'
else edtInn.Text := FormatFloat('#.##',talet);
end;
end;

Prosedyren les inn verdien i edtInn.Text, byter ut komma med punktum dersom komma er brukt, og legg verdien i s.
val(a, talet, feil) omformar talstrengen i s til eit tal og returnerer dette i talet. Dersom det er feil i talstrengen vil feil returnere eit tal som viser kva posisjon i strengen feilen har. 0 betyr ingen feil.

Resultatet blir skriven ut til edtInn.Text. Nå treng ein ikkje omforme til komma. dette blir gjort automatisk i utskrivinga.


Send melding

© Innhald og design:  Kolbjørn StuestølStuestøl heimesideSist endra 9. august 2017