karakter değiştirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

karakter değiştirme

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
type
kume=set of char;
var
th:kume;
k:integer;
begin
th:=['ı','İ','ü','Ü','ş','Ş','ö','Ö','ç','Ç','ğ','Ğ'];
for k:=1 to length(edit1.text) do
   begin
   if edit1.text[k] in th then
   showmessage('Lütfen Türkçe karekter kullanmayınız.');
   end;
end;
Arakadaşlar yukarıda ki kodda türkçe karakteri buluyorum ancak onu alternatifi ile değiştirmeyi başaramadım..
mesela ç yi bulduğu zaman c oalrak değştirme işlemini başaramadık.yardımlarınızı bekliyorum.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba...

- İki set halinde kurgu yapmalısın.. Yani neyi neyle değiştirceğini bildirmen gerek... Kısaca açıklamak gerekirse kume'yi vermişsin ama karşılığını vermemişsin...

- Edit1 içinde yazılı text bir buton ile kontrol edilmek üzere karakter sayısı kadar döngüye sokulmuş. Her harf bu (Türkçe) karakter kümesinin elemanlarından birine denk mi sorulmuş, öyle ise mesaj verilsin demişsin. Ama gariptir ki ilk bulduğu harfle döngüyü terk etmek üzere hamle yapmadığından her Türkçe harf için ayrı ayrı mesaj verecek... :roll:

- Neyse soruna dönelim. öçşığüÖÇŞİĞÜ karşılığında ocsiguOCSIGU olduğunu fonksiyona vermen lazım.

- Aynı döngüyü kullanacaksın. If içine düştüğünde bu elemanlardan hangisi olduğunu anlamak için yeni bir sorgu yapacaksın.

- Pos fonksiyonu bunun için biçilmiş kaftan... Pos ile bulduğun sıra numarasına karşılık İngilizce ayna kümesindeki aynı sıra numaralı harf karşılığı olacaktır. Bunu eskisinin yerine koyacaksın...

Kod: Tümünü seç

Const
  Turkce  = 'öçşığüÖÇŞİĞÜ';  
  English = 'ocsiguOCSIGU';
...
...
  English[Pos(edit1.text[k], Turkce)] // sana ipucu verir...
...
...
Resim
Resim ....Resim
Kullanıcı avatarı
sTb
Üye
Mesajlar: 59
Kayıt: 06 Nis 2005 11:13
Konum: Eskişehir

Mesaj gönderen sTb »

S.A.

Kendi çapımda yapmaya çalıştım.. İşinize yarar umarım .

Kod: Tümünü seç

function degis (c:char):char;
begin
if c='ı' then c:='i';
if c='İ' then c:='I';
if c='ü' then c:='u';
if c='Ü' then c:='U';
if c='ş' then c:='s';
if c='Ş' then c:='S';
if c='ö' then c:='o';
if c='Ö' then c:='O';
if c='ç' then c:='c';
if c='Ç' then c:='C';
if c='ğ' then c:='g';
if c='Ğ' then c:='G';
degis:=c;

end;
yaptıktan sonra

Kod: Tümünü seç

procedure TForm1.Button3Click(Sender: TObject);
type
kume=set of char;

var
th:kume;
a:string;
k:integer;
begin
a:='';
th:=['ı','İ','ü','Ü','ş','Ş','ö','Ö','ç','Ç','ğ','Ğ'];
for k:=1 to length(edit2.text) do
   begin
   if edit2.text[k] in th then begin
   showmessage('Lütfen Türkçe karekter kullanmayınız.');
   a:=a+degis(edit2.text[k]);
   end else
   a:=a+edit2.text[k]
   end;

   showmessage(a);

end;
Saygılarımla
" Her bildiğin doğru olsun. Ama her doğruyu her yerde söylemek doğru değildir. "
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

Kod: Tümünü seç

function Cevir(s:string):string;
 const
   list1:string='İĞÜŞÖÇöçşğüı';
   list2:string='IGUSOCocsgui';
 var
  j:byte;
 begin
    for j:=1 to length(list1) do
     while pos(list1[j],s)>0 do
       s[pos(list1[j],s)]:=list2[j];
    result:=s;
end;
sanırım bu kod işini görür.
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

function TForm1.degis(k: string): string;
const
turk:string='ı,İ,ü,Ü,ş,Ş,ö,Ö,ç,Ç,ğ,Ğ';
eng:string='i,I,u,U,S,s,o,O,c,C,g,G';
var
n:integer;
begin
for n:=1 to length(turk) do
while pos(turk[n],k)>0 do
k[pos(turk[n],k)]:=eng[n];
result:=k;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.Text:=degis(edit1.Text);
end;

end.
İşlem tamam arkadaşalr tıkır tıkır çalışıyor.kümeden vazgeçtim böle daha kolay oldu..herkese kolay gelsin ve teşekkür edrim güzel fikirleriniz için.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Ne mutlu :)

virgülleri kaldırsan olur, gerek yok onlara
Cevapla