![]() |
|
inputquery ile sayisal değer kontrolu - 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ığı: inputquery ile sayisal değer kontrolu (/showthread.php?tid=3976) |
inputquery ile sayisal değer kontrolu - serdar - 18-09-2019 merhaba arkadaşlar. inputquery yöntemi ile aldığım değerin integer veya dobule olmasını istiyorum(kısacası sayısal değer). Fakat aşağıdaki kodda "if not VarIsNumeric(s) then " satırı sayısal değere rağmen false döndürüyor. Şartı dogru şekilde nasıl kontrol ettırebılırım. bölme işlemi ile hata olusuyormu dıye bakmaktan daha kolay bır yolu vardır heralde diye düsünüyorum var
SifirlamaValues: TArray<string>;
begin
SetLength(SifirlamaValues, 1);
if InputQuery('SIFIRLAMA DEĞERİNİZ GİRİNİZ',['1.Sayaç: '],SifirlamaValues,
function(const AValues: array of string): Boolean
var
s: string;
begin
Result := True;
for s in AValues do
begin
if not VarIsNumeric(s) then // bu satır sayısal değer girilse bile false döndürüyor.yanı begın bloguna gırıyor.
begin
Result := False;
end;
end;
if not Result then
begin
MessageDlg('Sayısal Değer Girilmelidir', mtError, [mbOk], 0);
end;
end
) then
begin
Memo1.Lines.AddStrings(SifirlamaValues);
end else
begin
Memo1.Lines.Add('Sayısal Değer Girilmedi');
end;
end;
Cvp: inputquery ile sayisal değer kontrolu - Fesih ARSLAN - 18-09-2019 Merhaba, TryStrToInt fonksiyonu işinizi görecektir. var
Sayi: Integer;
begin
if TryStrToInt(Edit1.Text, Sayi) then
ShowMessage(Format('"%d" bir sayıdır.', [Sayi]))
else
ShowMessage(Format('"%s" bir sayı değildir! Lütfen bir sayı giriniz.', [Edit1.Text]));
end;
Cvp: inputquery ile sayisal değer kontrolu - serdar - 18-09-2019 (18-09-2019, Saat: 13:52)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba, tesekurler @Fesih ARSLAN hocam işe yaradı. Cvp: inputquery ile sayisal değer kontrolu - Tuğrul HELVACI - 20-09-2019 (18-09-2019, Saat: 13:20)serdar Adlı Kullanıcıdan Alıntı: merhaba arkadaşlar. Sorunu @Fesih ARSLAN beyin önerisi ile aşabilmişsiniz ama; VarIsNumeric metodunun neden olumlu yanıt dönmediği hususu havada kalmış. Buna küçük bir izah getirmeye çalışalım. Bu sorunun nedeni; VarIsNumeric metodu içine string tipli bir değişken geçiyor olmanız. Bu fonksiyon variant türünde bir parametre beklediği için variant haricindeki tüm tipler variant tipine implicit olarak cast ediliyor. Dolayısı ile VarIsNumeric metodunun içine geçilen parametre string değer içeren (VType'ı varUString olan) bir variant oluyor. Bu nedenle fonksiyondan olumlu bir yanıt dönmüyor. Yukarıdaki kodunuzda VarIsNumeric metoduna geçilecek parametreyi bir string tip ile değilde; sayısal değer tutabilen herhangi bir tip ile geçmiş olsaydınız, sonucun olumlu olduğunu gözlemleyebilecektiniz. inputquery ile sayisal değer kontrolu - serdar - 20-09-2019 @Tuğrul HELVACI hocam aslında merak etmedim değil. VarIsNumeric fonksiyonu nıye var dıye dusundum sonra. Bİlgilendirmeniz ıcın cok tedekkur ederım |