Yorumları: 46
Konuları: 13
Kayıt Tarihi: 04-11-2019
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.2
- Delphi 10.1
- Delphi XE7
Rep Puanı: 98 Başlangıç
22-12-2019, Saat: 12:43
(Son Düzenleme: 22-12-2019, Saat: 13:10, Düzenleyen: BGNew.)
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;
Yorumları: 283
Konuları: 1
Kayıt Tarihi: 13-03-2017
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.1
- Delphi XE7
- Delphi 7
Rep Puanı: 964 Acemi
(22-12-2019, Saat: 12:43)BGNew Adlı Kullanıcıdan Alıntı: 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;
[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]
Yorumları: 910
Konuları: 69
Kayıt Tarihi: 30-06-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 8.494 Üstad
ASCII karakter tablosunu inceleyin, türkçe karakterlerin a..z aralığında olmadığını göreceksiniz.
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
Yorumları: 57
Konuları: 4
Kayıt Tarihi: 28-04-2017
Rep Puanı: 189 Başlangıç
22-12-2019, Saat: 21:01
(Son Düzenleme: 22-12-2019, Saat: 21:04, Düzenleyen: Javs.)
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.
Yorumları: 122
Konuları: 3
Kayıt Tarihi: 10-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.787 Programcı
(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;
Ufak bir değişiklik umarım iş görür kolay gelsin.
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
Yorumları: 57
Konuları: 4
Kayıt Tarihi: 28-04-2017
Rep Puanı: 189 Başlangıç
Hocam ben doğru sonucu aldım ama tabi sizin gösterdiğiniz yol daha doğrudur muhakkak.
Yorumları: 122
Konuları: 3
Kayıt Tarihi: 10-11-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 1.787 Programcı
(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
Yorumları: 315
Konuları: 25
Kayıt Tarihi: 16-11-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 633 Acemi
String yerine ANSIString tanımlarsanız sorun çözülebilir. String içindeki karakterleri program Unicode string zannedebiliyor.
|