Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Turbo Pascal ja parit funktiot

Yew [26.01.2005 14:24:22]

#

Siis tämmöinen ohjelma ei käänny Turbo Pascal 7:ssa, valittaa ton lowercasen kohdalla "Unknown identifier"iä.
Mikähän mahtaa olla vikana? Vielä omituisemmaksi tämän tekee sen että Free Pascalilla tämä toimii juuri niin kuin pitääkin. Minun muistaakseni on toiminut joskus aikaisemmin TP:ssä.

PS. Ja kukaan ei sitten tule sanomaan että minun pitäisi vaihtaa joko Delphiin tai vaihtaa kääntäjää tai jotn. :D

Ohjelma:

{$X+}
Program nak;
Uses Crt;
Var STR: String;

Begin
Read(STR);
STR := Lowercase(STR);
Writeln(STR);
Readkey;
End.

Metabolix [26.01.2005 17:31:42]

#

Eipä näyttänyt TP5.5 ainakaan tuntevan tuota. UpCase-funktion esimerkkinä oli tapa muuttaa for-loopilla kirjain kerrallaan teksti isoksi. Delphistä tuo LowerCase löytyy SysUtils-unitista. Toiminta on sellainen, että jokainen kirjain (A-Z) muutetaan erikseen lisäämällä ASCII-arvoon 32. Ääkköset pitää toki hoitaa erikseen.

P.S. Muistapa kooditagit...

Yew [27.01.2005 14:52:17]

#

Jaahas. No onkos sitten mitään muuta tapaa hoitaa tuo stringien kirjaimet pieniksi?

Antti Laaksonen [27.01.2005 15:38:39]

#

Tietysti voit laatia oman funktion, joka tekee muunnoksen. Metabolixin viestistä selviää tämmöisen funktion toimintaperiaate.

Deewiant [27.01.2005 16:23:14]

#

Tuolla toimintaperiaatteella homma ei kuitenkaan toimi kuin ASCII-enkoodauksella tai sen johdannaisilla, eli esmes EBCDIC on poissa laskuista. <sarcasm>Mikä menetys! Ei niin voi tehdä!</sarcasm>

Metabolix [27.01.2005 21:38:01]

#

Deewiant: Tuskinpa kovin moni ohjelmointikieli oletuksena sisältää funktiota, joka huomioi kaikki enkoodaukset.

Tällaisen proseduurin väsäsin pikaisesti:

function MyLowerCase(S: string): string;
var
  A: Integer;
  R: string;
begin
  R := S;
  for A := 1 to Length(S) do
    if (R[A] >= 'A') and (R[A] <= 'Z') then
      Inc(R[A], 32);
    { else tarkista ääkköset erikseen }
  MyLowerCase := R;
end;

Jos funktiossa on mahdollista käyttää Result-muuttujaa, se on toki parempi kuin uuden muuttujan määritteleminen, mutta TP5.5 ei ainakaan sisällä sitä mahdollisuutta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta