1

Konu: Türkçe sıralama

Merhaba arkadaşlar,

Yazdığım bir programın isim bölümü benim kullandığım türkçe xp de türk alfabesine uygun sıralama yapıyor. Ancak bu gün kurduğum bir başka bilgisayarda program türkçe karakterleri en sona atıyor. ihtimal windowsun codepage ile ilgili bir sorun. Bunu düzeltmenin yolu nedir ? Düzeltme vfp dan mı yapılacak yoksa windowstan mı?
Sistem bilgim zayıftır smile Çözemedim.

Şimdiden teşekkürler.

2

Re: Türkçe sıralama

foxpro dos'ta config.fp den oluyordu ancak vfp'de eğer denetim masasından uluslararasından türkiye'yi seçmezsen hata veriyor config.fpw'ye yazsan bile olmuyor. denetim masasından dediğim yap. gerisi otomatik.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

3

Re: Türkçe sıralama

Sevgili Arkadaşlar,
Neredeyse 25 yıl önce Microsoft dos a Code Page 857 yi ekleyip klavyelere de türkçe karakterler konunca index lemede ayni sorunu yaşamıştık. Sorunu
sonunda şöyle bir kodla çözmüştüm: (tereciye tere satıyorum ama kusurumu bağışlayın)

Visual Fox Pro
index on trkind(field adı)

Function trkind
Parameters v_trkind
v_trkind = Strtran(v_trkind,"ö","o"+Chr(255))
v_trkind = Strtran(v_trkind,"ç","c"+Chr(255))
v_trkind = Strtran(v_trkind,"ş","ş"+Chr(255))
v_trkind = Strtran(v_trkind,"ı","h"+Chr(255))
v_trkind = Strtran(v_trkind,"I","H"+Chr(255))
v_trkind = Strtran(v_trkind,"ğ","g"+Chr(255))
v_trkind = Strtran(v_trkind,"ü","u"+Chr(255))
v_trkind = Strtran(v_trkind,"Ö","O"+Chr(255))
v_trkind = Strtran(v_trkind,"Ç","C"+Chr(255))
v_trkind = Strtran(v_trkind,"Ş","S"+Chr(255))
v_trkind = Strtran(v_trkind,"İ","I"+Chr(255))
v_trkind = Strtran(v_trkind,"Ğ","G"+Chr(255))
v_trkind = Strtran(v_trkind,"Ü","U"+Chr(255))
Return v_trkind


O fonksiyon denedim şimdi de 25 yıl önceki gibi çalışıyor.
Kullanıcının makina ayarlarıyla oynamaktansa index leri böyle çözmek bana daha iyi bir çözüm gibi geldi.
Sevgilerimle.
Erdal.

4

Re: Türkçe sıralama

çok çok eskiden ben de fonksiyon kullanırdım.
senin fonksiyon dbase filan kullanıyorsan gerekir. foxpro türkçe indeks yapabiliyor. illa fonksiyonla yapacaksan onu daha iyi yapan bir fonksiyonu da var zaten. ama bu şekilde rushmore optimizasyon çalışmaz. yani bence diğer çözüm daha iyi.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

5 Son düzenleyen, cetinbasoz (04.11.2009 13:41:17)

Re: Türkçe sıralama

Benim de Erdal abi'ninkine benzer bir cozumum vardi ( sys(15)'ten esinlenen bir cozum  ):

Visual Fox Pro
Create Cursor Turkce (isim c(20))

Insert into Turkce values ("Çetin")
Insert into Turkce values ("ÇETÝN")
Insert into Turkce values ("Ýbrahým")
Insert into Turkce values ("ýðdýr")
Insert into Turkce values ("izmir")
Insert into Turkce values ("ýtýr")
Insert into Turkce values ("aðrý")
Insert into Turkce values ("agrandizör")
Insert into Turkce values ("ahýr")
Insert into Turkce values ("þahin")
Insert into Turkce values ("salim")
Insert into Turkce values ("ülkü")
Insert into Turkce values ("zeki")
 
lcTestList = "AaBbCcÇçDdEeFfGgÐðHhIýÝiJjKkLlMmNnOoÖöPpRrSsÞþTtUuÜüVvYyZz"
For ix=1 to Len(m.lcTestList)
    Insert into Turkce values (Substr(m.lcTestList,m.ix,1))
EndFor
 
Index On TrMatch(isim) tag TrSira
locate
browse
 
? Seek(TrMatch("ýtýr"),"Turkce","TrSira"), Turkce.isim
? Seek(TrMatch("ITIR"),"Turkce","TrSira"), Turkce.isim
 
Function TrMatch
Lparameters tcStr
Local lcTrStr,lcEnStr
lcTrStr = "AaBbCcÇçDdEeFfGgÐðHhIýÝiJjKkLlMmNnOoÖöPpRrSsÞþTtUuÜüVvYyZz"
lcEnStr = "AABBCCDDEEFFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ[[\\]]"
Return Chrtran(m.tcStr,m.lcTrStr,m.lcEnStr)

6

Re: Türkçe sıralama

zamanında bir türkçe indeksleme fonksiyonu yazmıştım. Benim işime yarıyor. Senin de işine yarayabilir.


indeksleme
------------
index on trindex(dosya.alan) tag trsira

arama
--------------
seek trindex(aranan_alan)

function trindex
PARAMETERS alan
Return alltrim(upper(Chrtran(m.alan,'ıi','Iİ')))

7

Re: Türkçe sıralama

cetinbasoz yazdı:

Benim de Erdal abi'ninkine benzer bir cozumum vardi ( sys(15)'ten esinlenen bir cozum  ):
...

ya o sys(15)'i anlayana kadar canım çıkmıştı. ben abcçdefgğ diye string yapıyordum sıralamıyor. sıralamıyor. en sonunda bulmuştum. o zamanlar eta-logo kimsede türkçe indeks yoktu. bende vardı, hem de foxbase ile. cool

aslında dediğin gibi basitçe yapılabilecek birşey ama aklıma gelmemişti böyle bir çözüm... smile

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com