![]() |
|
Harf ve sayıları içinde farklı karakterleri ayıklama - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6) +--- Konu Başlığı: Harf ve sayıları içinde farklı karakterleri ayıklama (/showthread.php?tid=4335) |
Harf ve sayıları içinde farklı karakterleri ayıklama - BGNew - 22-12-2019 Merhaba; Databaseden kayıtları alıp masaüstüne word olarak kaydediyorum. Dosya adını da databasedeki kayıt ismene göre alıyorum. Fakat (a:s,e ' f A ^ ç ü ÜĞ) örnekteki gibi özel karakter kullanılmışsa dosya adında sorun yaşıyorum. Aşağıdaki kod ile çözmek istedim fakat yine çözüm olmadı. Yardımlarınızı rica ederim. function Ayikla(Sayi: String): String; var I: integer; S: String; begin S := Trim(Sayi); Sayi := ''; for I := 1 to Length(S) do begin if S[I] in ['a' .. 'z'] then begin if S[I] in ['A' .. 'Z'] then begin if S[I] in ['0' .. '9'] then begin Sayi := Sayi + S[I]; end; end; end; end; end; Cvp: Harf ve sayıları içinde farklı karakterleri ayıklama - meko - 22-12-2019 (22-12-2019, Saat: 12:43)BGNew Adlı Kullanıcıdan Alıntı: Merhaba; [quote pid='33605' dateline='1577007796'] function Ayikla(Sayi: String): String; var I: integer; S: String; begin S := Trim(Sayi); Sayi := ''; for I := 1 to Length(S) do begin if S[I] in ['a' .. 'z','A' .. 'Z', '0' .. '9'] then begin Sayi := Sayi + S[I]; end; end; end; [/quote] Harf ve sayıları içinde farklı karakterleri ayıklama - uparlayan - 22-12-2019 ASCII karakter tablosunu inceleyin, türkçe karakterlerin a..z aralığında olmadığını göreceksiniz. Cvp: Harf ve sayıları içinde farklı karakterleri ayıklama - Javs - 22-12-2019 function Ayikla(Sayi: String): String; var I: integer; S: String; begin S := Trim(Sayi); Sayi := ''; for I := 1 to Length(S) do begin if S[I] in ['a' .. 'z','A' .. 'Z', '0' .. '9', 'Ç', 'Ş', 'Ğ', 'Ü', 'Ö', 'İ', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı'] then begin Sayi := Sayi + S[I]; end; end; result := Sayi; end; Ufak bir değişiklik umarım iş görür kolay gelsin. Harf ve sayıları içinde farklı karakterleri ayıklama - Bahadir.Alkac - 23-12-2019 (22-12-2019, Saat: 21:01)Javs Adlı Kullanıcıdan Alıntı:function Ayikla(Sayi: String): String; var I: integer; S: String; begin S := Trim(Sayi); Sayi := ''; for I := 1 to Length(S) do begin if S[I] in ['a' .. 'z','A' .. 'Z', '0' .. '9', 'Ç', 'Ş', 'Ğ', 'Ü', 'Ö', 'İ', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı'] then begin Sayi := Sayi + S[I]; end; end; result := Sayi; end; Merhaba, Maalesef yukarıdaki fonksiyon hatalı. Derleyicinin size verdiği CharInSet kullanın tavsiyesi de hatalı. Buradaki asıl sorun şu: Her iki fonksiyon da [ ] arasındaki karakterleri byte'a çeviriyor. Dolayısıyla İ, ğ, Ğ gibi Türkçeye özel karakterlerin bir kısmı şartı sağlayamıyor. Kendiniz görmek isterseniz fonksiyonu 'iİüÜğĞ' stringini gönderin. Tavsiyem CASE kullanın. Okuması da kolay Örnek aşağıda:function Ayikla(Sayi: string): string; var I: integer; S: string; begin S := Trim(Sayi); Sayi := ''; for I := 1 to Length(S) do begin case S[I] of 'a'..'z', 'A'..'Z', '0'..'9', 'Ç', 'Ş', 'Ğ', 'Ü', 'Ö', 'İ', 'ç', 'ş', 'ğ', 'ü', 'ö', 'ı': begin Sayi := Sayi + S[I]; end; end; end; Result := Sayi; end; İyi çalışmalar Cvp: Harf ve sayıları içinde farklı karakterleri ayıklama - Javs - 23-12-2019 [attachment=887] Hocam ben doğru sonucu aldım ama tabi sizin gösterdiğiniz yol daha doğrudur muhakkak. Cvp: Harf ve sayıları içinde farklı karakterleri ayıklama - Bahadir.Alkac - 23-12-2019 (23-12-2019, Saat: 14:01)Javs Adlı Kullanıcıdan Alıntı: Hocam ben doğru sonucu aldım ama tabi sizin gösterdiğiniz yol daha doğrudur muhakkak. Merhaba, Aslında önceki mesajıma girip düzeltecektim, ama sonra vazgeçtim Benim yaptığım uyarı ve düzeltme Delphi 2009 ve üstü sürümler için geçerlidir. Yani Unicode string'lerin varsayılan string biçim olduğu sürümler.Size de tavsiyem, bir an önce modern bir Delphi sürümüne geçmenizdir ![]() İyi çalışmalar Harf ve sayıları içinde farklı karakterleri ayıklama - enigma - 23-12-2019 String yerine ANSIString tanımlarsanız sorun çözülebilir. String içindeki karakterleri program Unicode string zannedebiliyor. |