Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Türkçe karakter
#1
Merhaba;

Kullanıcının Edite girdiği harflerin küçük harf olmasını sağlamak istiyorum, fakat ilk harf büyük olacak anacak ilk harfte şöyle bir sıkıntı çıkıyor "İ" olası gerekirken "ı" olarak yazıyor Türkçe karakter ilgili sorun var utf8 araştırdım fakat firemonkeyde çözüm bulamadım, yardımlarınızı rica ederim.

function degis(Harf: String): String;
const
  Buyuk: String = 'ABCÇDEFGGHIİJKLMNOÖPRSŞTUÜVYZQW';
  Degis: String = 'abcçdefgğhıijklmnoöprsştuüvyzqw';
var
  N: Integer;
begin
  for N := 1 to Length(Buyuk) do
    while Pos(Buyuk[N], Harf) > 0 do
      Harf[Pos(Buyuk[N], Harf)] := Degis[N];
  Result := AnsiUpperCase(Harf[1]) + Copy(Harf, 2, Length(Harf));
end;


procedure TForm1.EditChangeTracking(Sender: TObject);
begin
  if Edit.Text.Length > 0 then
  begin
    Edit1.Text := degis(Edit1.Text);
  end;
end;
Hayat bazen güzel olabiliyor.
Cevapla
#2
Belki daha efektif yazılabilirdi ama şöyle bir fonksiyon işinizi görebilir;

function LowerCaseTR(aString: String; aBuyukBasHarf: Boolean = True): String;
const
  K = 'aeirlıdknmyustboüşzghçğcvpöfjwx';   // Harfleri böyle sıralanmasının sebebi
  B = 'AEİRLIDKNMYUSTBOÜŞZGHÇĞCVPÖFJWX';   // Bunların Türkçedeki kullanım sıklıklarına göredir.
var
  I: Integer;                              // Sayaç, indis değişkeni
  X: Integer;                              // Bulunan harfin alfabedeki indis numarası
begin
  Result := aString;
  for I := 1 to Result.Length do begin     // metni harf harf geziyoruz. (Bir rakam ile de karşılaşabiliriz...)
      X := pos(Result[I], B);              // POS, büyük / küçük harfe duyarlıdır (Case Sensitive). Yani büyükse küçüğü, küçükse büyüğü bulmaz.
      if (X > 0) then Result[I] := K[X];   // Bulunan karakter alfabemizde varsa küçüğüyle yer değiştiriyoruz.
  end;
  if (aBuyukBasHarf = True) then
      for I := 1 to Result.Length do begin // Metni harf harf geziyoruz
          X := pos(Result[I], K);
          if (X > 0) then begin
              Result[I] := B[X];
              Exit;                        // İlk harfi büyüttükten sonra çıkıyoruz...
          end;
      end;
end;
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Cevapla
#3
Allah razı oldun, hakkınızı helal edin. Açıklamalar için ayrıca teşekkür ederim.
Hayat bazen güzel olabiliyor.
Cevapla
#4
Rica ederim, ben de sayenizde aşağıdakinin farkına varmış oldum;

oOk8bm.jpg

Kaynak;

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Kaynak URL;

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Karakter ekleme dilo 2 45 2 saat önce
Son Yorum: mcuyan
Question karakter değiştirme-eş zamanlı ? BY-HAYALET 9 199 08-07-2018, Saat: 13:13
Son Yorum: cinarbil
  AndroidManifest Dosyasi Karakter Sorunu codder71 5 170 30-05-2018, Saat: 10:04
Son Yorum: Fesih ARSLAN
  IOS unidac Türkçe karakter sorunu hassur 8 2.259 26-11-2016, Saat: 11:51
Son Yorum: hassur



Konuyu Okuyanlar: 1 Ziyaretçi