Prawdziwe oblicze Informatyki. Tysiące linijek kodu i kompilatory które nigdy nie wybaczają.
Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 10:35
    Windows 7 Opera
Kontakt:

Post20 lip 2012, 15:38

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ć ?

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Opera

Post20 lip 2012, 15:43

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ć.
There is no cloud. It's just someone else's computer.

Awatar użytkownika

lolasher

Zasłużony użytkownik
Posty: 2432
Rejestracja: 10 paź 2008, 19:28
Lokalizacja: Zadupie pod Siedlcami ;)
    Windows 8 Opera

Post20 lip 2012, 15:46

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

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Opera

Post20 lip 2012, 15:51

Zakładając, że jest w systemie zmienna comspec wskazująca lokalizację cmd.exe:

Kod: Zaznacz cały

exec(getenv('COMSPEC'),'chcp blablabla');
There is no cloud. It's just someone else's computer.

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 10:35
    Windows 7 Opera
Kontakt:

Post20 lip 2012, 19:36

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.

Awatar użytkownika

PisarzKsiazkowicz

Moderator
Posty: 2149
Rejestracja: 27 sty 2010, 7:53
    Windows 7 Opera

Post20 lip 2012, 19:51

Nie wiem, czy dobrze czytam Twój kod, ale... dlaczego konwertujesz do małych liter tekst napisany małymi literami?

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Safari

Post20 lip 2012, 19:53

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
There is no cloud. It's just someone else's computer.

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 10:35
    Windows 7 Opera
Kontakt:

Post20 lip 2012, 20:03

@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.

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Safari

Post20 lip 2012, 20:06

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'
There is no cloud. It's just someone else's computer.

Awatar użytkownika

PisarzKsiazkowicz

Moderator
Posty: 2149
Rejestracja: 27 sty 2010, 7:53
    Windows 7 Opera

Post20 lip 2012, 20:07

Nie rozumiem, po co obie strony zamieniasz na małe litery, no ale ok.

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Safari

Post20 lip 2012, 20:10

To też jest dyskusyjne :P
There is no cloud. It's just someone else's computer.

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 10:35
    Windows 7 Opera
Kontakt:

Post20 lip 2012, 20:13

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. :(

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Safari

Post20 lip 2012, 20:16

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.
There is no cloud. It's just someone else's computer.

Awatar użytkownika

TheMediator95

Posty: 468
Rejestracja: 29 kwie 2010, 10:35
    Windows 7 Opera
Kontakt:

Post20 lip 2012, 20:20

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.

Awatar użytkownika

pc.qwerty

Zasłużony użytkownik
Posty: 3276
Rejestracja: 01 lip 2010, 12:28
    Mac OS X Safari

Post20 lip 2012, 20:28

Wedle uznania :>
There is no cloud. It's just someone else's computer.

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 18 gości