[ Milan Milosevic @ 06.10.2015. 12:24 ] @
UpperCase funkcija ne konvertuje cirilicu.
Da li postoji neka funkcija koja to radi.
[ savkic @ 06.10.2015. 12:31 ] @
Koji Delphi i da li ti je WideString ili string. Ima i AnsiUpperCase...
[ Milan Milosevic @ 06.10.2015. 12:40 ] @
Da li AnsiUpperCase može za ćirilicu?
Delphi 10 u pitanju je sqlite baza UTF-8 encoding

Query

SELECT * FROM Jezici WHERE UPPER(naziv) LIKE UPPER("%en%")
kod SQLite menager radi upit, ali kroz delphi ne

Probao sam i nesto ovako, ali ne konvertuje

Caption:=System.UnicodeString.UpperCase('ćMilan')
vraca isto



[Ovu poruku je menjao Milan Milosevic dana 07.10.2015. u 19:07 GMT+1]
[ savkic @ 06.10.2015. 13:31 ] @
Definitivno mora AnsiUpperCase (koristi OS za konverziju) dok SysUtils.UpperCase radi samo za ASCII karaktere.
[ Milan Milosevic @ 06.10.2015. 15:35 ] @
AnsiUpperCase radi poso

Hvala
[ Milan Milosevic @ 06.10.2015. 17:13 ] @
Izgleda da u delphiju Query funkcija UPPER ne radi za cirilicu.
Imate li neka iskustva sa ovim
[ savkic @ 06.10.2015. 17:42 ] @
UPPER u ovom tvom primeru mi deluje da je funkcija od baze, ne znam kako ona funkcioniše to trebaš videti u dokumentaciji.
[ Milan Milosevic @ 06.10.2015. 18:06 ] @
UPPER funkcija SQL-a i konvertuje selektovane vrednosti polja u velika slova.
Pogledao sam i ona radi ASCII kodiranje.
Probao sam za zapise latinicnim pismom i radi kako treba, medutim sa cirilicom nece.
Izgleda da je ovo opsti nedostatak kod sqlite-a.



[Ovu poruku je menjao Milan Milosevic dana 07.10.2015. u 19:08 GMT+1]
[ savkic @ 06.10.2015. 23:08 ] @
SQLite podržava overloading funkcija tako da ti možeš UPPER redefinisati i implementirati u tvom programu. Nažalost ja to nisam radio pa i ne mogu ti biti nešto više od pomoći.
[ Milan Milosevic @ 07.10.2015. 16:02 ] @
Problem resen hvala savkicu.

Ukoliko nekom bude zatrebalo iskoristiti komponente
FDPhysSQLiteDriverLink i FDSQLiteFunction
Pomocu komponente FDSQLiteFunction mozes definisati svoje funkcije koje posle koristis u okviru SQL upita.
Recimo ja sam za pretvaranja sva cirilicna slova u velika napravio funkciju GORE

Code:
procedure TUnosPodatakaForm.FDSQLiteFunction1Calculate(
  AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs;
  AOutput: TSQLiteOutput; var AUserData: TObject);
begin
    AOutput.AsString:=AnsiUpperCase(AInputs[0].AsString)
end;


i onda je pozoves iz Query ja

Code:
   
  Velika:=AnsiUpperCase(EditNazivPredmeta.Text);
   SQLString:='SELECT * FROM Predmeti WHERE GORE(naziv)  LIKE  "%'+Velika+'%"';