View Full Version : سوال: حذف کردن صفر های اول در edit
  
arkia
سه شنبه 02 شهریور 1389, 16:20 عصر
من یه edit دارم که معمولا چند رقم اول آن صفر داره حالا برای محاسبات میخوام صفر های اولش رو بردارم به نظرتون با چه کدی صفر های اولش رو بردارم؟ :متفکر:
Delphi7_love
سه شنبه 02 شهریور 1389, 16:55 عصر
اگر تبدیل به عددش کنید صفر های اون برداشته میشه
 
   edit1.Text:=inttostr(strtoint(edit1.Text))
hossein_h62
سه شنبه 02 شهریور 1389, 18:29 عصر
اگر تبدیل به عددش کنید صفر های اون برداشته میشه
 
   edit1.Text:=inttostr(strtoint(edit1.Text))
 
البته بشرطی که عددتون از 2147483647 بیشتر نباشه!
Delphi7_love
سه شنبه 02 شهریور 1389, 18:40 عصر
البته بشرطی که عددتون از 2147483647 بیشتر نباشه!
 
من مثال رو با int زدم دیگه تغییرات راحته
واسه همین ناراحتی ؟ :گیج:
   edit1.Text:=floattostr(strtofloat(edit1.text))
hossein_h62
سه شنبه 02 شهریور 1389, 19:01 عصر
من مثال رو با int زدم دیگه تغییرات راحته
واسه همین ناراحتی ؟ :گیج:
   edit1.Text:=floattostr(strtofloat(edit1.text))
 
بازم بشرطی که عددتون از 15 رقمی بزرگتر نشه!
Delphi7_love
سه شنبه 02 شهریور 1389, 19:09 عصر
بازم بشرطی که عددتون از 15 رقمی بزرگتر نشه!
 ایشون گفتن میخوان توی محاسبات استفاده کنن و نیازی به اعداد بزرگتر از 15 رقم نیست
Felony
سه شنبه 02 شهریور 1389, 19:39 عصر
اگر هم علاقه ای به استفاده از اعداد بزرگتر از 15 رقم دارید میتونید به صورت زیر 0 های اول رو حذف کنید :
var
  Chr: Char;
begin
  for Chr in Edit1.Text do
    if Chr <> '0' then
    begin
      Edit1.Text:= Copy(Edit1.Text, Pos(Chr, Edit1.Text), Length(Edit1.Text));
      Exit;
    end;
end;
arkia
چهارشنبه 03 شهریور 1389, 03:32 صبح
اگر هم علاقه ای به استفاده از اعداد بزرگتر از 15 رقم دارید میتونید به صورت زیر 0 های اول رو حذف کنید :
var
  Chr: Char;
begin
  for Chr in Edit1.Text do
    if Chr <> '0' then
    begin
      Edit1.Text:= Copy(Edit1.Text, Pos(Chr, Edit1.Text), Length(Edit1.Text));
      Exit;
    end;
end;
ممنون آقای تاجیک اتفاقا ارقام بالا هستند 23 یا 24 رقمی هستش ، از این کد نتونستم استفاده کنم ای کاش بصورت تابع می نوشتیش که ورودیش استرینگ باشه و خروجیش اینتجر
--------------------
اگر تبدیل به عددش کنید صفر های اون برداشته میشه
 
   edit1.Text:=inttostr(strtoint(edit1.Text))
اولش همینو تست کردم نشد با 24 یا 23 رقم سرو کار دارم
Felony
چهارشنبه 03 شهریور 1389, 05:11 صبح
ممنون آقای تاجیک اتفاقا ارقام بالا هستند 23 یا 24 رقمی هستش ، از این کد نتونستم استفاده کنم ای کاش بصورت تابع می نوشتیش که ورودیش استرینگ باشه و خروجیش اینتجر
خروجیش اینتیجر ؟!
Function RemoveZero(Const Str: String) : String;
var
  Chr: Char;
begin
  for Chr in Str do
  if Chr <> '0' then
  begin
    Result:= Copy(Str, Pos(Chr, Str), Length(Str));
    Exit;
  end;
end;
hossein_h62
چهارشنبه 03 شهریور 1389, 12:30 عصر
اینم هست البته با خروجی استرینگ :
procedure TForm1.Button1Click(Sender: TObject);
var
temp,str:String;
i:integer;
begin
str:=Edit1.text;
for i:=1 to Length(Edit1.Text) do
 begin
 temp:=copy(str,1,1);
 if temp = '0' then
 begin
 Delete(str, 1, 1);
 end
 else
 end;
 Edit1.Text:= str;
end;
arkia
چهارشنبه 03 شهریور 1389, 13:52 عصر
اینم هست البته با خروجی استرینگ :
procedure TForm1.Button1Click(Sender: TObject);
var
temp,str:String;
i:integer;
begin
str:=Edit1.text;
for i:=1 to Length(Edit1.Text) do
 begin
 temp:=copy(str,1,1);
 if temp = '0' then
 begin
 Delete(str, 1, 1);
 end
 else
 end;
 Edit1.Text:= str;
end;
با این کد اگه داخل رشته صفر داشته باشیم اونم حذف میکنه؟
hossein_h62
چهارشنبه 03 شهریور 1389, 14:02 عصر
با این کد اگه داخل رشته صفر داشته باشیم اونم حذف میکنه؟
 
نه دوست عزیز از سمت چپ شروع میکنه به حذف صفرها و به اولین عدد غیر از صفری که رسید از حلقه خارج میشه.
arkia
چهارشنبه 03 شهریور 1389, 14:03 عصر
خروجیش اینتیجر ؟!
Function RemoveZero(Const Str: String) : String;
var
  Chr: Char;
begin
  for Chr in Str do
  if Chr <> '0' then
  begin
    Result:= Copy(Str, Pos(Chr, Str), Length(Str));
    Exit;
  end;
end;
این پیغام رو میده کد قبلی هم که با تابع نبود همینو میداد میشه راجع بهش یه توضیح مختر بدید که این کد چیکار می کنه؟ :متفکر:
Felony
چهارشنبه 03 شهریور 1389, 14:17 عصر
چه پیغامی ، من که پیغامی نمیبینم ، برنامه نمونه رو ضمیمه کردم .
Mahmood_M
چهارشنبه 03 شهریور 1389, 15:23 عصر
این پیغام رو میده کد قبلی هم که با تابع نبود همینو میداد میشه راجع بهش یه توضیح مختر بدید که این کد چیکار می کنه؟ 
این ساختار ( ورودی ) حلقه for در دلفی 7 به پایین پشتیبانی نمیشه و فکر کنم از دلفی 2009 اضافه شده ، پس اگه از دلفی 7 به پایین استفاده میکنید پیغام خطا دریافت خواهید کرد !
می تونید به صورت زیر عمل کنید :
Function RemoveZero(Str: String) : Int64;
var
 I : Integer;
begin
 for I := 1 to Length(Str) do
  begin
   if StrToInt(Copy(Str, 1, 1)) <> 0 then
    begin
     Result := StrToInt64(Str);
     Exit;
    end;
   Delete(Str, 1, 1);
  end;
end;
برای کار با اعداد بزرگ حداکثر تا 19 رقم می تونید به وسیله ی Int64 داشته باشید که اون هم بیشترین مقدارش این هست : " 9223372036854775807 " ، برای رقم های بالاتر باید به صورت String و ... با اعداد کار کنید ، یک پکیج همراه با سورس و مثال در اینجا (http://delphiforfun.org/programs/Library/big_integers.htm) هست که می تونه کمکتون کنه ...
موفق باشید ...
arkia
چهارشنبه 03 شهریور 1389, 23:01 عصر
چه پیغامی ، من که پیغامی نمیبینم ، برنامه نمونه رو ضمیمه کردم .
برنامه شما هم این خطا رو میده دقیقا مثل خطای برنامه خودم
arkia
چهارشنبه 03 شهریور 1389, 23:05 عصر
این ساختار ( ورودی ) حلقه for در دلفی 7 به پایین پشتیبانی نمیشه و فکر کنم از دلفی 2009 اضافه شده ، پس اگه از دلفی 7 به پایین استفاده میکنید پیغام خطا دریافت خواهید کرد !
می تونید به صورت زیر عمل کنید :
Function RemoveZero(Str: String) : Int64;
var
 I : Integer;
begin
 for I := 1 to Length(Str) do
  begin
   if StrToInt(Copy(Str, 1, 1)) <> 0 then
    begin
     Result := StrToInt64(Str);
     Exit;
    end;
   Delete(Str, 1, 1);
  end;
end;
برای کار با اعداد بزرگ حداکثر تا 19 رقم می تونید به وسیله ی Int64 داشته باشید که اون هم بیشترین مقدارش این هست : " 9223372036854775807 " ، برای رقم های بالاتر باید به صورت String و ... با اعداد کار کنید ، یک پکیج همراه با سورس و مثال در اینجا (http://delphiforfun.org/programs/Library/big_integers.htm) هست که می تونه کمکتون کنه ...
موفق باشید ...
دوستان ممنون ، با این کد حل شد
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.