Strona 6 z 12

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:38
autor: TheMediator95
852 już mam pozostaje mi użycie pozostałych dwóch. Ale to nic nie da bo jak napiszę chcp i stronę kodową to mi się ona nie zapisze na stałe tylko do momentu zamknięcia konsoli. Ale znalazłem W helpie konsoli takie coś:
C:\Users\Łukasz>change chcp
Nieprawidłowe parametry
CHANGE { LOGON | PORT | USER }
Ktoś wie co w parametrach wpisać ?

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:43
autor: pc.qwerty
Nic. Zamiast tego wyedytuj sobie w rejestrze wartość OEMCP w kluczu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage.
Możesz też odpalać cmd z przełącznikiem /a (ansi) lub /u (unicode), nie wiem które w twoim przypadku będzie działać.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:46
autor: lolasher
Albo możesz włączać chcp w programie, nie pamiętam jaką procedurą się wywołuje polecenia dosa system(); ? jest coś takiego w Pascalu?

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 15:51
autor: pc.qwerty
Zakładając, że jest w systemie zmienna comspec wskazująca lokalizację cmd.exe:

Kod: Zaznacz cały

exec(getenv('COMSPEC'),'chcp blablabla');

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 19:36
autor: TheMediator95
pc.qwerty pisze:Możesz też odpalać cmd z przełącznikiem /a (ansi) lub /u (unicode), nie wiem które w twoim przypadku będzie działać.
Objaśnij bo na razie nic nie działa a strona kodowa 65001 ustawiona przez mnie w Rejestrze doprowadziła do Bricku systemu i musiałem go przywracać :P
A i tak przy okazji: Co ma niby dawać instrukcja ansilowercase? Albo jej źle używam albo nie wiem jak ma działać :(

Kod: Zaznacz cały

a[1].question := Concat('S',chr(136),'u',chr(190),'y do zamiany sygna',chr(136),'',chr(162),'w analogowych na sygna',chr(136),'y cyfrowe:');	
	a[1].odp1 := Ansilowercase('koder');
Dla tego wyżej odpowiedź Monitor z dużej litery jest niepoprawna.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 19:51
autor: PisarzKsiazkowicz
Nie wiem, czy dobrze czytam Twój kod, ale... dlaczego konwertujesz do małych liter tekst napisany małymi literami?

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 19:53
autor: pc.qwerty
ansilowercase zamienia podany string na małe litery - w tym co podajesz, zamieniasz "koder" na "koder"...
Prawidłowo: (warunek - poprawna odpowiedź zapisana już w małych literach)

Kod: Zaznacz cały

if ansilowercase(odpowiedz_podana)=odpowiedz_prawidlowa then write('DOBRZE!');
BTW. nie używaj concat() bo tylko zaciemnia on kod. To samo robi:

Kod: Zaznacz cały

'string1'+'string2'+jakas_zmienna_ze_stringiem

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 20:03
autor: TheMediator95
@pc.qwerty już ogarnąłem funkcję Ansilowercase to powinno wyglądać tak:

Kod: Zaznacz cały

Function Pytaj_znaki(a : Pytanie_znaki): Boolean;
 Var Odp : String;
Begin
		Clrscr;
		Writeln (a.question);
		Readln (Odp);
		If (Ansilowercase(Odp) = Ansilowercase(a.odp1)) Then
			Pytaj_znaki := True
		Else
			Pytaj_znaki := False;    
End; 
.. i teraz jest dobrze, a co do funkcji concat() to przestane jej używać (tzn. usunę ją) jak mi powiesz jak ogarnąć stronę kodową tak abym się nie musiał męczyć z tablicą ASCII.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 20:06
autor: pc.qwerty
Nie wiem jak to wygląda z tą stroną kodową, ale czy nie możesz po prostu napisać tak:

Kod: Zaznacz cały

'normalne literki'+chr(costam_w_ascii)+'dalej normalne literki'
albo jeszcze prościej (ale nie wiem czy zadziała):

Kod: Zaznacz cały

'normalne literki'+#ascii+'dalej normalne literki'

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 20:07
autor: PisarzKsiazkowicz
Nie rozumiem, po co obie strony zamieniasz na małe litery, no ale ok.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 20:10
autor: pc.qwerty
To też jest dyskusyjne :P

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 20:13
autor: TheMediator95
PisarzKsiazkowicz pisze:Nie rozumiem, po co obie strony zamieniasz na małe litery, no ale ok.
Dlatego bo odpowiedzi mam już powpisywane z dużych liter.

@pc.qwerty a szkoda że nie wiesz naprawdę szkoda bo gdyby ktokolwiek wiedział to nie musiałbym się w ogóle bawić w tablicę ASCII i mógłbym spokojnie przenosić mój program na Linuxa np. tego w mojej szkole. :(

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 20:16
autor: pc.qwerty
Ja bym te odpowiedzi i tak zrobił jako A/B/C... bo ze sprawdzaniem tych które masz to się potniesz :P
Przykład:

Kod: Zaznacz cały

  p[9].question := Concat('Jak',chr(165),' pojemno',chr(152),'',chr(134),' ma dyskietka 3.5 cala (Wysokiej g',chr(169),'stosci)? Warto',chr(152),'',chr(134),' do podania w MB.');
  p[9].answer := 1.44;
Wpiszę 1,44 i brick.
A tak robisz readkey w pętli i nie martwisz się o wielkość liter, bo sprawdzasz po kodzie wciśniętego znaku, a nie po stringu.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 20:20
autor: TheMediator95
pc.qwerty pisze:Ja bym te odpowiedzi i tak zrobił jako A/B/C... bo ze sprawdzaniem tych które masz to się potniesz :P
Przykład:

Kod: Zaznacz cały

  p[9].question := Concat('Jak',chr(165),' pojemno',chr(152),'',chr(134),' ma dyskietka 3.5 cala (Wysokiej g',chr(169),'stosci)? Warto',chr(152),'',chr(134),' do podania w MB.');
  p[9].answer := 1.44;
Wpiszę 1,44 i brick.
A tak robisz readkey w pętli i nie martwisz się o wielkość liter, bo sprawdzasz po kodzie wciśniętego znaku, a nie po stringu.
CO ??
Gdybym dał takie coś jako A/B/C/D to ta gra byłaby zbyt łatwa :) Przynajmniej jeśli chodzi o takie pytanie.

Re: [Pascal] Losowanie pytań

: 20 lip 2012, 20:28
autor: pc.qwerty
Wedle uznania :>