[ vula @ 17.12.2006. 14:38 ] @
Pozdrav.
Da li neko od vas zna kako da rijesim slijedeci problem?

U Bazi Podataka mi moraju biti podaci sa nasim slovima, dakle podaci tipa čaša a ne casa i podaci tipa Slaviša a ne Slavisa .
I stavio sam da mi Baza Podataka bude Croatian_CS_AS_WS (mozda sam pogrijesio redoslijed ali znate na sa mislim).

E sada, u aplikaciji treba da imam edit polja za unos tih podataka.

I ako za ta edit polja stavim da im je font neki YU font onda mi na ekranu, dok korisnik unosi , ispisuje dobro ali u Bazu podataka ne unosi dobro .
Dakle, kad korisnik ukucava podatke u to polje njemu pise fino čaša ali meni u Bazi Podataka bude ~a{a , odnosno ako je unos npr. Đ đ Š š Č č Ć ć Ž ž u Bazi Podataka bude \ | [ { ] } ^ ~ @ ` .

A kada stavim neki font koji nije YU (npr. Microsoft Sans Serif) , podesim mu Script na Central european i Lenguage Settings za tastaturu podesenu na Serbian (Latin) onda je sa unosom u edit polje sve u redu ali ne i sa unosom u Bazu Podataka .
I npr. napravio sam unos Đ đ Š š Č č Ć ć Ž ž . Kada otvorim Bazu Podataka a tamo pise ? ? Š š E e A a Ž ž .
E sad, kad ostavim ovu kombinaciju sa tasterima tastature i otvorim Bazu Podataka direktno , npr. iz Query Analyzer-a i napravim direktan unos sa ovim podesavanjima u Bazu Podataka mi unosi regularno , dakle Đ đ Š š Č č Ć ć Ž ž .

A kad otvorim otvorim Bazu Podataka iz aplikacije , tj. posaljem SLQ upit iz aplikacije u Bazu Podataka i on mi vrati recordset u aplikaciji pise za prvi slucaj \ | [ { ] } ^ ~ @ ` a u drugoj situaciji sa Keybord settings na Serbian (Latin) ? ? + + E e A a + + pri cemu su + + u stvari crne kockice ali nisam mogao ovdje da iz pronadjem. A kad kopiram iz aplikacije to polje i uradim Paste u npr. Notepad ispise mi ? ? Š š E e A a Ž ž .

Jel neko imao nekada ovakav problem i kako ga je rijesio?

Hvala.
[ kiklop74 @ 17.12.2006. 15:43 ] @
Kada postavljas neko pitanje moras da kazes i sledece stvari:

1. Koji operativni sistem koristis?
2. Koji razvojni alat koristis?
3. Koju bazu podataka koristis?

Bez tih informacija niko ne moze da ti pomogne jer se onda tvoje pitanje svodi na "meni ovo ne radi. Kako da ga nateram da radi?" pri tome ne rekavsi sta je "ovo".

[ vula @ 17.12.2006. 16:36 ] @
Citat:
kiklop74: Kada postavljas neko pitanje moras da kazes i sledece stvari:

1. Koji operativni sistem koristis?
2. Koji razvojni alat koristis?
3. Koju bazu podataka koristis?

Bez tih informacija niko ne moze da ti pomogne jer se onda tvoje pitanje svodi na "meni ovo ne radi. Kako da ga nateram da radi?" pri tome ne rekavsi sta je "ovo".


1. XP, SP 2
2. Borland C++ Builder, za dizajn baze sam koristio Power Designer, ADO komponente za komunikaciju sa bazom
3. MSSQL Server 2000
[ X Files @ 17.12.2006. 17:07 ] @
VCL kontrole nisu UNICODE, pa ćeš morati da se igraš sa kodnim stranama i
vidiš da li će to pomoći. (Postoje i komercijalne VCL UNICODE komponente za
BCB, ali to je već druga tema)

Prvo: INSTALIRANA TASTATURA nije isto što i INSTALIRANA KODNA STRANA ZA KONVERZIJU.

Probaj ovako (za XP):

OTVORI APLET: Control Panel / Regional and Language Options

a) KARTICA: Languages

TASTER: Details...
TASTER: Add...
PADAJUĆA LISTA: Dodaj tvoju matičnu latiničnu tastaturu, ako već nije bila u spisku, dakle:

"Serbian (Latin)" ili
"Slovenian" ili
"Croatian" ili
"Bosnian (Latin, Bosnia and Herzegovina)" ili
"Serbian (Latin, Bosnia and Herzegovina)" ili
"Croatian (Bosnia and Herzegovina)".

b) KARTICA: Advanced (OVO JE NAJVAŽNIJE !!!)

PADAJUĆA LISTA: Izaberi tvoju matičnu kodnu stranu, dakle:

"Serbian (Latin)" ili
"Slovenian" ili
"Croatian" ili
"Bosnian (Latin, Bosnia and Herzegovina)" ili
"Serbian (Latin, Bosnia and Herzegovina)" ili
"Croatian (Bosnia and Herzegovina)".

TASTER: OK (da prihvatiš izmene)
TASTER: OK (da učitataš kodnu stranu direktno sa HD-a)
TASTER: OK (da restartuješ Windows).


Programski:

• koja je (grupna) kodna strana aktivna na računaru možeš proveriti sa: GetACP(),
i eventualno obavestiti korisnika da treba da je promeni (tebi treba 1250);
Code:

bool __fastcall TForm1::IsCodePage1250()
{
   if ( ::GetACP() == 1250 )
      return ( true );
   return ( false );
}


• koja je tastatura aktivna na računaru možeš proveriti sa GetKeyboardLayoutName().
Code:

void __fastcall TForm1::Button1Click(TObject *Sender) 

   char KLID[KL_NAMELENGTH+1]  = {0}; 
   GetKeyboardLayoutName( KLID ); 
   ShowMessage( KLID ); 


Konstante možeš da pogledaš ovde:
http://msdn.microsoft.com/libr...ibrary/en-us/intl/nls_238z.asp

• da na računaru postaviš drugu tastaturu (koju uparuješ sa kodnom stranom),
možeš sa LoadKeyboardLayout().
Code:

// ako je kodna strana 1250, onda postavi SVOJU tastarturu (srpsku, hrvatsku, bosansku,
//... tj. onu koju imaš u tray-u, sve odgovaraju), a ako nije, postavi EN
AnsiString CP;
if ( IsCodePage1250() )
   CP = "0000" + GetSysLanguage();
else
   CP = "00000409";
LoadKeyboardLayout( CP.c_str(), KLF_ACTIVATE );

... sad ti treba (zbog gornjeg koda) kako da saznas TVOJU matičnu kodnu stranu:

• instalirana TAČNA kodna strana:
Code:

AnsiString GetSysLanguage() 

   char buffer[5] = {0}; 
   ::GetLocaleInfo( LOCALE_SYSTEM_DEFAULT, LOCALE_IDEFAULTLANGUAGE , buffer, 5 ); 
   return AnsiString( buffer ); 





[ vula @ 17.12.2006. 18:26 ] @
E svaka ti cast! Kralj si!

Nisam uopste znao za ovaj

Control Panel -> Regional and Language Options -> Advanced

fazon.

Cim sam to podesio sve je ok.
Unosi u Bazu dobro i u aplikaciji mi dobro prikazuje podatke.

Hvala!
[ X Files @ 17.12.2006. 18:46 ] @
To "Advanced" podešavanje je u YU podneblju poželjno i zbog drugih programa.

Npr, neke verzije Acrobat Readera ne mogu sa Find da nađu pojedina latinična
slova kao na primer slovo "Č".

Čim se podesi u Advanced bilo koja kodna strana br. 1250, sve je u redu.