AnsiUpperCase ve ı sorunu ??

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

AnsiUpperCase ve ı sorunu ??

Mesaj gönderen unicorn64 »

merhaba arkadaşlar.forumda aradım fakat bi sonuca ulaşamadım. eğer varsa kusura bakmayın.

tckimlik no sorgulamanın farklı bi versiyonunu yapıyorum. kimlik bilgileri excel dosyasından alınıyor ve bulunan tckimlik no yine aynı dosyadaki TC kimlik no sütununa yazılıo. sorunum şu: cinsiyet sütununa girilen değer i programda

Kod: Tümünü seç

if AnsiUpperCase(StringGrid1.Cells[6,satir])='ERKEK' then
         temelbilgi.Cinsiyet:=Erkek
      else if AnsiUpperCase(StringGrid1.Cells[6,satir])=('KADIN') then
         temelbilgi.Cinsiyet:=Kadin
      else
         temelbilgi.Cinsiyet:=Bilinmiyor;
şeklinde kontrol ettim. ancak eğer dosyada KADIN yazıyorsa tamam çalışıyor fakat kadın yazarsa ansiuppercase den KADıN olarak döndüğü için program çakılıyor...

ansiuppercase diğer tüm türkçe karakterleri (ğüşöç) büyük harfe çevirmesine rağmen ı harfini çevirmemekte ısrar ediyor.

önce aklıma erkek değilse kadındır yahu demek geldi ama ladies gentlemen and the others lafı aklıma geldi :) sanırım bu web servisini de hazırlayanlar aynı şeyi düşünmüş olmalı ki bilinmiyor die bi seçim hallı koymuşlar dedim....

napmam lazım bu konuda ...
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

arkadaşlar kusura bakmayın forum flood oldu biraz ama excel den bilgileri stringgride attığımı ve ordan kontrol ettiğimi söylemeyi unutmuşum..
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

cevabı buldum akadaşlar.AnsiUpperCase yerine aşağıdaki fonksiyonu kullanınca sorun kalmıo.

Kod: Tümünü seç

Function bh (s : string) : string;
var
kucuk,buyuk : string;
i,j : integer;
begin
kucuk := ’abcçdefgğhıijklmnoöpqrsştuüvwxyz’;
buyuk := ’ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZ’;
for i := 1 to length(s) do
begin
for j:=1 to length(kucuk) do
begin
if (kucuk[j]=s[i]) then s[i]:=buyuk[j];
end;
end;
result := s;
end;
ikut

Mesaj gönderen ikut »

unicorn64 yazdı:cevabı buldum akadaşlar.AnsiUpperCase yerine aşağıdaki fonksiyonu kullanınca sorun kalmıo.

Kod: Tümünü seç

Function bh (s : string) : string;
var
kucuk,buyuk : string;
i,j : integer;
begin
kucuk := ’abcçdefgğhıijklmnoöpqrsştuüvwxyz’;
buyuk := ’ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZ’;
for i := 1 to length(s) do
begin
for j:=1 to length(kucuk) do
begin
if (kucuk[j]=s[i]) then s[i]:=buyuk[j];
end;
end;
result := s;
end;
formun key previşeini true yapıp key ı ise I yapta diyebirdin. ansi uppercasede çakılmazdı. yinede senin bulduğun stabil bir çözümdür.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Mesaj gönderen unicorn64 »

key preview ne işe yarıyor tam olarak bilmiyorum ama key kelimesinden dolayı klavye tuşlarıyla alakası var sanırım diye düşünüyorum. ama ben excelden okuduğum veriyi stringgride atıp oradki değeri kontrol ediyorum. yani sonuçta bir değişkenin değerini kontrol etmiş oluyorum. key preview burda işe yarar mı??
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Gerek Yok Ama

Mesaj gönderen sabanakman »

Fazla yöntem göz çıkarmaz. İş görüldü ise gerek yok ama bir de benden katkı olsun istedim. AnsiUpperCase'i kullanmadan önce sadece ı harflerini büyütsen de olur fakat i harfini bunu kullanarak büyütmeye kalkarsan I olacaktır.

Kod: Tümünü seç

function TrBuyut(const S:String):String;
const 
  Eski:String='ıi';   // ï í ì  gibi harfler varsa onlar da eklenebilir.
  Yeni:String='Iİ'; // Ï Í Ì
var i,j:Integer;
begin
  Result:=S;
  for i:=Length(Result) downto 1 do begin
    j:=Pos(Result[i],Eski);
    if j>0 then Result[i]:=Yeni[j];
  end;
  Result:=AnsiUpperCase(Result);
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla