PDA

View Full Version : error checking strtoint



delphi77
شنبه 22 اسفند 1383, 10:56 صبح
درود بر همه شما جویندگان دانش
از توجه شما نسبت به این موضوع سپاس گزارم

چگونه می توانم از ورود یک integer در tedit مطمئن شوم قبل از اینکه آن را strtoint کنم؟

خرم آن روز کز این منزل ویران بروم راحت جان طلبم و ز پی جانان بروم

alidll
شنبه 22 اسفند 1383, 17:30 عصر
با سلام
یک راهش اینه که در هنگام ورود اطلاعات اونهارا چک کنی در onkeyPress :


procedure TMessage_Form.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
if (Key <> #8) And (Key <> '1') And (Key <> '2') And (Key <> '3')
And (Key <> '4') And (Key <> '5') And (Key <> '6') And (Key <> '7')
And (Key <> '8') And (Key <> '9') And (Key <> '0') And (Key <> #13)
And (Key <> #27) then
key:=#0
end;

:موفق:

مهدی کرامتی
شنبه 22 اسفند 1383, 17:54 عصر
چگونه می توانم از ورود یک integer در tedit مطمئن شوم قبل از اینکه آن را strtoint کنم؟
جستجوی مطالب سایت معمولا کمک خوبی است و حجم مطالب سایت رو هم بیخودی بالا نمیبره.



برادر alidll: چه روش سختی! کوتاه تر از این هم میشد نوشت:

if not(key in ['0'..'9',#8,#13]) then key := #0;

delphi77
شنبه 22 اسفند 1383, 18:55 عصر
من نمی خ.ام جولوگیری کنم من می خ.ام تشخیص بدم.مانند تابعی در vb که این کار را می کردisint
من می خوام type مقدار ورودی را تشخیص بدم
اگر integer ..
else ...

مهدی کرامتی
شنبه 22 اسفند 1383, 22:56 عصر
ببین این بدردت میخوره:

try
StrToInt('0k909');
except
on EConvertError do
ShowMessage('Convert Error. Input string contains invalid characters.');
end;

اگر نه دقیقا توضیح بده که چی میخواهی.

delphi77
یک شنبه 23 اسفند 1383, 08:44 صبح
ببین این بدردت میخورهقبل از اینکه پیغام بده توی strtoint در برنامه error می دهد

UnREal
یک شنبه 23 اسفند 1383, 09:36 صبح
@delphi77 : برنامه رو اول کامپایل کن بعدش تست کن.
و اگر وقت دیباگ این پیام خطا رو بهت نشون داد یک بار زحمت بکش و F9 رو دوباره فشار بده :sunglass:

delphi77
یک شنبه 23 اسفند 1383, 14:40 عصر
دست شما درد نکنه
در حالتی که توضیح دادید درست کار می کنه
ولی آیا واقعا نمیشه در محیط دلفی بشکلی safe این کار را انجام داد

C# Programmer
یک شنبه 23 اسفند 1383, 17:17 عصر
دلفی قبل از سیستم عامل خطاها رو می گیره
وقتی فایل exe رو اجرا کنی (خارج از دلفی) این مشکل رو نداری :wink:

مهدی کرامتی
یک شنبه 23 اسفند 1383, 17:33 عصر
فکر میکردم اینقدر باهوش باشی که از کدهای فوق نتیجه لازم رو بگیری و کارت رو انجام بدی.

بهرحال من یک نمونه تابع با استفاده از کدهای فوق اینجا برات گذاشتم که کار همون تابع VB رو انجام میده:

function IsInt(Input: string): boolean;
var
i: integer;
b: boolean;
begin
b := true;
if Input <> '' then
begin
for i := 1 to length(Input) do
begin
if not (Input[i] in ['0'..'9']) then
begin
b := false;
break;
end;
end;
end
else
b := false;
result := b;
end;


مثال استفاده:

if IsInt(Edit1.Text) then
ShowMessage('This is an Integer')
else
ShowMessage('This is not a valid Integer');

delphi77
دوشنبه 24 اسفند 1383, 11:37 صبح
:موفق: