Heja

Zaczął mnie dzisiaj nurtować takowy problem. Jest sporo funkcji, do operacji na String'ach które są zależne od tzw "current windows locale". M.in. AnsiUpperCase.

S := 'ąśćłóźżńę';
ShowMessage(AnsiUpperCase(S));

To fajnie działa ... u mnie. Ale zastanawiam się kiedy to działać przestanie. Czy jak ktoś ma zainstalowanego "Ruskiego windowsa" czy jak ?

W Helpie do tych funkcji piszą że ich działanie jest zależne od current windows locale. Ale co to dokładnie oznacza ? Co musi zwrócić coś innego niż 1045: GetSystemDefaultLCID czy GetUserDefaultLCID ? UserDefaultLCID można zmienić z poziomu "Opcji regionalnych i językowych" ale funkcja dalej działa.

W zasadzie pytanie mi się nasunęło bo napisałem sobie UDF'a pod Firebird'a coś a'la Pos w Delphi ale działającego na BLOB'ach. Do funkcji dodałem parametr czy szukanie ma być case-insensitive czy też nie. Jak ma być insesnsitive to robie 2 razy AnsiUpperCase. Ale ... tego samego UDF'a będę płodził pod FreePascalem zainstalowanym na linuxie, tak aby otrzymać plik *.so dla klientów mających FB na linuksie. I bardzo jestem ciekaw czy to tam będzie działać. Właściwie to jestem bardziej ciekaw co zrobić jak to tam nie będzie działać. Jest jakaś funkcja SetLocaleInfo, ale czy ona ma wpływ na działanie AnsiUpperCase ?

Pozdrawiam i z góry dziękuję za odpowiedzi
b