Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
İzin verilen adet kadar
#1
Merhaba. Edite sadece sayı, nokta ve virgül girilmesini sağlıyorum. ancak nokta ve virgüle izin verilen adet kadar girilebilsin, fakat çıkamadım işin içinden Big Grin

Nokta ve vürgül sayı adetini nasıl belirleye bilirim?

function TForm6.KarakterKontrol(Karakterler: String): String;
var
  Nokta, Virgul: String;
  NAdet, VAdet, RowNumber: Integer;
begin
  Nokta := '.';
  Virgul := ',';
  RowNumber := 0;
  for I := 1 to Length(Karakterler) do
  begin
    Inc(RowNumber);
    if Pos(Virgul, Karakterler[I]) > 0 then
    begin
      for I := RowNumber to Length(Karakterler) do
    end
    else
    begin
      if Pos(Nokta, Karakterler[I]) > 0 then
      begin
      end
      else
      begin
        Result := Karakterler;
      end;
    end;
  end;
end;


procedure TForm6.Edit1ChangeTracking(Sender: TObject);
begin
 Edit1.Text := KarakterKontrol(Edit1.Text);
end;

procedure TForm6.Edit1KeyDown(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);
begin
  if Not(KeyChar in ['0' .. '9', '.', ',']) then
    KeyChar := #0;
end;
Hayat bazen güzel olabiliyor.
Cevapla
#2
Merhaba,

uses RegularExpressions;

function CountChar(const s: string; const c: char): integer;
begin
Result:= TRegEx.Matches(s, c).Count;
end;
Cevapla
#3
Merhaba,
Bir nostalji olsun.  Rolleyes

FPC.png
Delphi Can'dır!
WWW
Cevapla
#4
(25-05-2017, Saat: 20:55)meko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

uses RegularExpressions;

function CountChar(const s: string; const c: char): integer;
begin
Result:= TRegEx.Matches(s, c).Count;
end;



Selam, bu Regular tam olarak nedir? bununla ilgili kaynak yok denebilecek kadar az.
Cevapla
#5
(26-05-2017, Saat: 08:47)serhat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(25-05-2017, Saat: 20:55)meko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

uses RegularExpressions;

function CountChar(const s: string; const c: char): integer;
begin
Result:= TRegEx.Matches(s, c).Count;
end;

Selam, bu Regular tam olarak nedir? bununla ilgili kaynak yok denebilecek kadar az.

Çok güzel bir şey, senin işini görür. Regular, her dilde vardır.
Arkadaşın yukarıda verdiği kod sana birinci parametrenin içerisinde, ikinci parametredeki chardan kaç adet bulunduğunu verecektir.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#6
(26-05-2017, Saat: 08:47)serhat Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(25-05-2017, Saat: 20:55)meko Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

uses RegularExpressions;

function CountChar(const s: string; const c: char): integer;
begin
Result:= TRegEx.Matches(s, c).Count;
end;

Selam, bu Regular tam olarak nedir? bununla ilgili kaynak yok denebilecek kadar az.

Merhaba,
Kaynak çok, fakat anlaşılır kaynak bulmak zor.
TRegEx konusunda bildiğim en canlı kaynak:  Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol. Smile

Bakın: 
1- Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
2- Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
3- Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
4- Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
5- Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol, RegEx ve Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol yorumu:
(21-02-2017, Saat: 22:18)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTRegEx gördüm; kesin barutali'dir dedim Big Grin

Kaynak: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Ali Bey TRegEx konularını yanıtsız bırakmıyor. Bu vesile ile kendisine teşekkür ederim.
Bu arada müsait bir zamanda RegEx'in ABC'sini anlatan bir makale paylaşırsa memnun oluruz.
Delphi Can'dır!
WWW
Cevapla
#7
Sanırım Regular Expressions'da Patter'ni anlamak gerekiyor

M0OGM1.png
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#8
Normalde bu işin en doğrusu tabiki RegEx fakat RegEx olmasa da değişik yöntemler denenebilir. Delphi 7 kullandığım için string işlemleri çok zayıf. String siplit delphi 7 de olmadığı için bende internette string split fonksiyonu buldum ve biraz kurcalayıp değiştirdim. 3 tane farklı method yaptım.

İlkinde istediğiniz bir ayıraç ile o ayıraca kadarki yazıyı aldım. İkincide ise ayıracın sayısını aldırdım. Üçüncüde bu yazıları bir diziye atarak bu elemanlarla işlemler yaptırdım.

Sizin sorunuzda, ikinci methodu kullanarak ayıraç sayısının sizin istediğinizdeki sayıdan fazla ise uyarı verdirebilirsiniz.

Split methodu:
procedure Split(aValue : string; aDelimiter : Char; Result : TStrings);
var
 X : Integer;
 S : string;
begin
 if Result = nil then Result := TStringList.Create;
 Result.Clear;
 S := '';
 for X:=1 to Length(aValue) do begin
   if aValue[X] <> aDelimiter then
     S:=S + aValue[X]
   else begin
     Result.Add(S);
     S := '';
   end;
 end;
 if S <> '' then Result.Add(S);
end;

Ayıraç Sayısı Metodu:
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;

Görünüm:
vpzzG6.gif

Dosya:
Linkleri Görebilmeniz İçin Giriş yap veya Üye Olİndirebilirsiniz | Yandex Disk
WWW
Cevapla
#9
String split Delphi 7 elbette var ama biraz dolaylı yoldan:
Sizin yazdığınız örnek üzerinden gidersek;
Memo1.Lines.Delimiter := ',';
Memo1.Lines.DelimitedText := 'Hakan,Uçar,Delphi,Can';
There's no place like 127.0.0.1
WWW
Cevapla
#10
bence olaya faklı bir açıdan bakmak daha iyi olabilir sanırım para yazımı ile alakalı bir sorun var buna yönelik çözümler daha kolay olabilir. birde soruyu soran arkadaş ordana kaybolmuş resmen o kadar cevaba bir yorum yok?
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Flash player izin verme Lord_Ares 23 1.494 08-10-2017, Saat: 23:29
Son Yorum: Lord_Ares
  Rad Studio Neden Bu Kadar Hızlı? savasabd 14 1.084 27-09-2017, Saat: 19:21
Son Yorum: ismailkocacan
  Kaç adet var Dostk 3 613 23-01-2017, Saat: 19:07
Son Yorum: Dostk



Konuyu Okuyanlar: 1 Ziyaretçi