Kezdőoldal » Számítástechnika » Programozás » Pascal programozás Lazarussal....

Pascal programozás Lazarussal. Miért nincs ékezet az írt programban? Mit csináljak hogy legyen?

Figyelt kérdés

Pascalban megjelenik az ékezet, megírt (dos-os) programban nem.(á helyett ilyesmit ír: |-í )

Szeptemberben kezdtem tanulni a programozást suliban. A tanár nem tudott válaszolni, de elvileg van neki karakter az ékezetekre, és a lazarusban látszanak is az ékezetek, csak a kész programban nem.

Valakinek ötlet, mit csináljak, hogy jó legyen?



2012. szept. 30. 14:24
1 2
 1/11 anonim ***** válasza:
A konzol karakterkészlete más, van valami parancs rá, amivel át lehet lőni. (Most meg nem mondom mi az....)
2012. szept. 30. 14:30
Hasznos számodra ez a válasz?
 2/11 ejbenjaro ***** válasza:
A problémát a karakteres felület karakterkódolása okozza. A lazarusban a szerkesztett fájl (és amit fordít is) UTF-8-as kódolást használ. A Windows parancssora pedig CP852-es kódlappal operál (emlékeim szerint). Ez okozza a problémát. Megoldani vagy úgy tudod, hogy egy DOS-os szövegszerkesztőt használsz, ami a helyes karaktereket teszi bele, vagy használod a lazarus konvertáló függvényeit és eljárásait a kiírt szövegek esetében. Vagy, egyszerűen nem használsz ékezeteket a programodban.
2012. szept. 30. 14:33
Hasznos számodra ez a válasz?
 3/11 A kérdező kommentje:

Eddig az ékezet használatát mellőztem. (mellőztük).

De kezd hiányozni az ékezet.. illetve dolgozat lesz (kapunk 3 program leírást.. és nekünk kell rá programot írni..), ha sikerülne ékezeteket is bele tennem, az javíthatna a jegyemen (ugyanis a megvalósítás- és a működés alapján osztályoz).

2012. szept. 30. 14:45
 4/11 ejbenjaro ***** válasza:

Van még egy lehetőség a problémád megoldására, de nem 100%-os, ahogy az alábbi Wiki bejegyzésben olvasom:

[link]


Tehát a uses után vegyél fel egy

{$IFDEF WINDOWS}

Windows,

{$ENDIF}

bejegyzést, majd a fő program részed begin-je után egy ilyet:

{$IFDEF WINDOWS}

SetConsoleOutputCP(CP_UTF8);

{$ENDIF}

Elviekben megoldja a problémát, de ahogy az a linkelt Wiki oldalon olvasható is, okozhat kavarokat a parancssor működésében.

2012. szept. 30. 14:45
Hasznos számodra ez a válasz?
 5/11 A kérdező kommentje:

Köszönöm, de nem jó. :(

programv1 Fatal: Syntax error, "BEGIN" expected but "identifier WINDOWS" found.

Szerintem jól csináltam..

(a sorok törlése/visszaállíátsa után a program működik)

2012. szept. 30. 14:54
 6/11 ejbenjaro ***** válasza:
Mutasd a kódot, és kiderül :).
2012. szept. 30. 14:55
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:

Így néz ki a sorok beillesztése után:

(ez még csak egy gyakorló program.. és a "goto" parancsért ne szóljatok be.. tudom, hogy nem helyes, de még csak nemrég kezdtem..)

Program matekmuveletek;

Uses Crt;

Windows,

{$ENDIF}

Label 1;

Var Sel: String;

a,b,c,d : real;

YN : Char;

nev:string;

Begin

{$IFDEF WINDOWS}

SetConsoleOutputCP(CP_UTF8);

{$ENDIF}

1:Clrscr;

textcolor(11);

c:= 0;

GotoXy(4,3);

Writeln('1.Osszeadás ');

textcolor(10);

GotoXy(4,4);

Writeln('2.Kivonas ');

textcolor(13);

GotoXy(4,5);

Writeln('3.Szorzas ');

textcolor(14);

GotoXy(4,6);

Writeln('4.Bennfoglalas ');

textcolor(12);

GotoXy(4,7);

Writeln('5.Kilepes ');

textcolor(15);

GotoXy(6,8);

Writeln('Kivalasztas: ');

Writeln(' ');

Writeln(' ');

textcolor(1);

Writeln(' By: J.V.A.');

textcolor(15);

Sel := Readkey;

If Sel = '1' then

Begin

ClrScr;

Write('1. szam: ');

Readln(a);

Write('2. szam: ');

Readln(b);

c:= a + b;

Writeln('Osszeadas: ',a:0:0,' + ',b:0:0,' = ',c:0:0);

Write('Nyomj ENTERT a folytatashoz...');

Readkey;

Goto 1;

End;

If Sel = '2' then


Begin

ClrScr;

Write('1. szam: ');

Readln(a);

Write('2. szam: ');

Readln(b);

c:= a - b;

Writeln('Kivonas: ' ,a:0:0, '-' ,b:0:0, '=' ,c:0:0);

Write('Nyomj ENTERT a folytatashoz...');

Readkey;

Goto 1;

End;

If Sel = '3' then

Begin

ClrScr;

Write('1. szam: ');

Readln(a);

Write('2. szam: ');

Readln(b);

c := a * b;

Writeln('Szorzas: ' ,a:0:0, 'x' ,b:0:0, '=' ,c:0:0);

Write('Nyomj ENTERT a folytatashoz...');

Readkey;

Goto 1;

End;

If Sel = '4' then

Begin

ClrScr;

Write('1. szam: ');

Readln(a);

Write('2. szam: ');

Readln(b);

d := a / b;

Writeln('Bennfoglalas ' ,a:0:0,' / ',b:0:0,' = ',d:0:2);

Write('Nyomj ENTERT a folytatashoz...');

Readkey;

Goto 1;

End;

If Sel = '5' then

Begin

ClrScr;

Write('Biztos?(Igen/Nem)');

YN := Readkey;

If YN = 'i' then Halt;

If YN = 'n' then Goto 1;

//Készítette: J.Viktor//

End;

End.

2012. szept. 30. 14:59
 8/11 ejbenjaro ***** válasza:

XP-n kipróbáltam, ott nem igazán működött jól ez a megoldás, de hibásan is vetted fel a Windows unitot a uses után. Próbáld ki, hogy így megy e neked: [link]

Eljárásokat és függvényeket nem tanultatok még? Azok segítségével szebben is meg lehet oldani a menüzést és az egyes műveletek elvégzését.

2012. szept. 30. 15:32
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:

Köszi mindenkinek a fáradozást!

Sajnos ugyan az, mint előtte..

A program működik, de ékezet nincs.

Win7x64)

2012. szept. 30. 16:02
 10/11 ejbenjaro ***** válasza:

Na, közben megvilágosodtam :). Megoldható a probléma pár kattintással. Nyomni kell egy jobb klikket a szerkesztő ablakában (lazarus 1.0 esetében), vagy a szerkesztő ablakban azon a fülön, ami a program nevét mutatja. A listában ki kell választani a File Settings menüpontot, majd azon belül az Encoding menüpontot és az alatt a szükséges kódolást (CP852, vagy ha ez nincsen akkor CP850), majd a felbukkanó ablakban a Change File gombra kattintani. Ezt követően lefordítva a programot már a helyes karakterkódolással mutatja a kiírt szöveget. (mellékelek egy videót arról, amit most itt röviden leírtam, ez linux alatt készült, de windowson is így működik). Videó itt: [link]


És itt a program eljárással és függvénnyel megoldva is, hogy lásd, így valamivel kevesebbet kell gépelni. Szerintem legalább is rövidebb: [link]

2012. szept. 30. 17:16
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!