Yorumları: 95
Konuları: 45
Kayıt Tarihi: 10-02-2017
Rep Puanı: 67 Başlangıç
Merhaba; Daha önce açmış olduğum ( Parayı çarpma ve toplama işlemi) başlıklı benzen konu gibi olsa da bir birinden faklı.
Edit içine ondalıklı sayı olsun veya olmasın toplama işlemini yaptırmak istiyorum, bu nedenden dolayı nokta ve virgül adet kontrolüyle işleme başlamak istiyorum.
fakat bir türlü nokta ve virgül kontrolünü sağlayamadı. edit içine maksimum 1 adet virgül 2 adet nokta girilecek. acaba nerede hata yapıyorum? bir türlü kontrol sağlanmıyor
var
NoktaSay, VirgulSay: Integer;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
const
Aranan: String = '.,';
var
SearchChar: String;
begin
for I := 1 to length(Aranan) do
begin
SearchChar := Key;
if Pos('.', SearchChar[I]) > 0 then // Nokta var mı?
Inc(NoktaSay);
if Pos(',', SearchChar[I]) > 0 then // Virgül var mı?
Inc(VirgulSay);
if NoktaSay > 2 then // Nokta say
if Not(Key in ['0' .. '9', #8]) then
begin
Key := #0;
end;
if VirgulSay > 1 then // Virgül say
if Not(Key in ['0' .. '9', #8]) then
begin
Key := #0;
end;
end;end;
Anlayamadığım marketlerde bu işlem mi adamlar nasıl çözmüş
Yorumları: 4.245
Konuları: 381
Kayıt Tarihi: 07-07-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 17.107 Üstad
19-06-2017, Saat: 15:53
(Son Düzenleme: 19-06-2017, Saat: 15:56, Düzenleyen: Fesih ARSLAN.)
Merhaba,
Daha önce benzer konular İzin verilen adet kadar konu başlığı altında görüşülmüştü.
DelphiCan'dır!
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
benzer konuya yazdığım son procedure'yi incelediniz mi?
Yorumları: 95
Konuları: 45
Kayıt Tarihi: 10-02-2017
Rep Puanı: 67 Başlangıç
19-06-2017, Saat: 15:57
(Son Düzenleme: 19-06-2017, Saat: 15:59, Düzenleyen: serhat.)
(19-06-2017, Saat: 15:54)meko Adlı Kullanıcıdan Alıntı: benzer konuya yazdığım son procedure'yi incelediniz mi?
Aynen inceledim hata sizin vermiş olduğunuz örnekten fikir alarak yola çıktım, kaç gündür resmen kafayı yedim...
(19-06-2017, Saat: 15:53)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Daha önce benzer konular İzin verilen adet kadar konu başlığı altında görüşülmüştü.
Onuda incelemiştim Fesih hocam.
Yorumları: 617
Konuları: 66
Kayıt Tarihi: 05-10-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.300 Uzman
Suyu baştan keselim  jedi componenti yükle jvcalcedit componenti forma bırak display formata #,##0.00 yapıştır yada cxcalcedit onda da aynı şekilde #,##0.00 işini göreceği kanısındayım.
“Do. Or do not. There is no try.”
Yorumları: 2.153
Konuları: 259
Kayıt Tarihi: 09-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 4.659 Uzman
(19-06-2017, Saat: 16:23)masteryoda Adlı Kullanıcıdan Alıntı: Suyu baştan keselim jedi componenti yükle jvcalcedit componenti forma bırak display formata #,##0.00 yapıştır yada cxcalcedit onda da aynı şekilde #,##0.00 işini göreceği kanısındayım.
 Hiç bizi yorma diyorsun
Yorumları: 617
Konuları: 66
Kayıt Tarihi: 05-10-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.300 Uzman
(19-06-2017, Saat: 17:03)yhackup Adlı Kullanıcıdan Alıntı: (19-06-2017, Saat: 16:23)masteryoda Adlı Kullanıcıdan Alıntı: Suyu baştan keselim jedi componenti yükle jvcalcedit componenti forma bırak display formata #,##0.00 yapıştır yada cxcalcedit onda da aynı şekilde #,##0.00 işini göreceği kanısındayım.
Hiç bizi yorma diyorsun
virgülden sonra 4 hane yeter diye düşünüyorum parasal tutarlar için (genel olarak) hiç bu kadar uğraştığımı da hatırlamıyorum yok noktadır yok vigüldür şukadar nokta bu kadar virgül display formatları ayarlıyoruz geçiyoruz müşteriye göre parametrik yapıp gül gibi geçiniyoruz.
“Do. Or do not. There is no try.”
Yorumları: 859
Konuları: 9
Kayıt Tarihi: 17-11-2016
Rep Puanı: 1.774 Programcı
firemonkey mobil için bu tip bir örenin var mı hazır komponet tarzında
Yorumları: 103
Konuları: 21
Kayıt Tarihi: 03-09-2016
Rep Puanı: 1.162 Programcı
19-06-2017, Saat: 17:31
(Son Düzenleme: 19-06-2017, Saat: 17:33, Düzenleyen: brs.)
(19-06-2017, Saat: 15:47)serhat Adlı Kullanıcıdan Alıntı: Merhaba; Daha önce açmış olduğum (Parayı çarpma ve toplama işlemi) başlıklı benzen konu gibi olsa da bir birinden faklı.
Edit içine ondalıklı sayı olsun veya olmasın toplama işlemini yaptırmak istiyorum, bu nedenden dolayı nokta ve virgül adet kontrolüyle işleme başlamak istiyorum.
fakat bir türlü nokta ve virgül kontrolünü sağlayamadı. edit içine maksimum 1 adet virgül 2 adet nokta girilecek. acaba nerede hata yapıyorum? bir türlü kontrol sağlanmıyor
var
NoktaSay, VirgulSay: Integer;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
const
Aranan: String = '.,';
var
SearchChar: String;
begin
for I := 1 to length(Aranan) do
begin
SearchChar := Key;
if Pos('.', SearchChar[I]) > 0 then // Nokta var mı?
Inc(NoktaSay);
if Pos(',', SearchChar[I]) > 0 then // Virgül var mı?
Inc(VirgulSay);
if NoktaSay > 2 then // Nokta say
if Not(Key in ['0' .. '9', #8]) then
begin
Key := #0;
end;
if VirgulSay > 1 then // Virgül say
if Not(Key in ['0' .. '9', #8]) then
begin
Key := #0;
end;
end;end;
Anlayamadığım marketlerde bu işlem mi adamlar nasıl çözmüş 
Anladığım kadarıyla edite siz izin verilen adet kadar yani nokta 2 adet, virgül ise 1 adet girilmesini istiyorsunuz.
Fesih hocanın verdiği linki inceledim İzin verilen adet kadar Hakan uçar beyin yapmış olduğu kodlarda biraz değişiklik yaparak, sanırım sizin işini görecek şekilde uyarladım.
bakalım sorununuzu çözecek mi?
function DelimiterCount(aValue: string; aDelimiter: Char): integer;
var
X: Integer;
S: String;
begin
Result := 0;
S := '';
for X := 1 to length(aValue) do
begin
if aValue[X] <> aDelimiter then
S := S + aValue[X]
else
begin
Inc(Result);
S := '';
end;
end;
end;
procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if DelimiterCount(Edit2.Text, ',') >= 1 then
if Not(Key in ['0' .. '9', '.', #8]) then
begin
Key := #0;
end;
if DelimiterCount(Edit2.Text, '.') >= 2 then
begin
if Not(Key in ['0' .. '9', ',', #8]) then
begin
Key := #0;
end;
end;
end;
Yorumları: 305
Konuları: 20
Kayıt Tarihi: 26-09-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 3.989 Uzman
19-06-2017, Saat: 18:59
(Son Düzenleme: 19-06-2017, Saat: 18:59, Düzenleyen: barutali.)
Gerekli Namespace ler..
uses RegularExpressions, StrUtils;
Fonksiyonuzmuz
function SaydaGelGurbanOlam(const Value, Delim : String) : Byte;
var
tmpStr : String;
begin
tmpStr := TRegEx.Replace(Value, '\w|\d|\'+ IfThen((Delim = '.'), ',', '.'), '');
result := Length(tmpStr);
end;
Nasıl Kullanılır?
// SaydaGelGurbanOlam(<Neyin İçinde Arayacak>, 'Ne Arayacak Nokta mı? Virgül mü?')
showmessage( SaydaGelGurbanOlam('10.10', ',').toString );
Amatör Küme Bilgisayar Programcısı
|