مرسی مهندس. برای اینکه اعداد را 3 رقم 3 رقم با ویرگول جدا بشن راه حلی وجود داره؟
نمایش نسخه قابل چاپ
مرسی مهندس. برای اینکه اعداد را 3 رقم 3 رقم با ویرگول جدا بشن راه حلی وجود داره؟
با تشکر از مدیرجون با اجازه ایشون یکن توضیح بدم.
تابع اولی (delete_kama) رو که باید در محل implementation یا همون imp بنویسیم برای اینه که مثلا وقتی عدد 1234 رو نویشتیم و تبدیل شد به 1،234 ، حالا وقتی میخوایم عدد 567 رو هم بهش اضافه کنیم ، بیاد و اول کامای اولی رو حذف کنه تا طول واقعی رشته بدست بیاد که بتونه سه رقم سه رقم جداش کنه.برای حالت 1،234،567 هم همینطوره و باید تمامی کاما ها حذف بشه و عملیات جداسازی از اول شروع بشه انگار که یک دفعه عدد 1234567 رو بهش دادیم نه به صورت کاراکتر به کاراکتر.
در مورد دستوره* delete(s,p,1) هم که میاد و از رشته s له اندازه 1 واحد* و از کاراکتر pام پاک میکنه.در مورد دستوره
insert(s,mystr,i-2)هم باید گفت که کاراکتر یا رشته S رو در رشته MYSTR در محل کاراکتر i-2 اضافه میکنه و وقتی این کار رو کرد مکان نما به همون محل انتقال می یابد و با دستور
DBEdit1.SelStart:=length(mystr) میاد و مکان نما رو به محل کاراکتر length(mystr) میبره که در اینجا میشه طول رشته یا همون آخره رشته که کاراکتر های بعدی طبق روال عادی به آخر رشته اضافه شوند.فقط حکم دستوره mystr:=mystr رو نمی فهمم.با تشکر و عذر خواهی از اساتید
برای محدود کردن یک تکست باکس به اعداد از کد زیر استفاده می شود ، ضمنا این کد برای تمامی*آبجکت های*همسان هم کاربرد دارد ...
کد:
کد:SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong(Edit1.Handle,GWL_STYLE)or ES_NUMBER);
کد بالا بایستی در رویداد FormCreate* درج گردد.
سلام.بله
ابتدا تابع حذف کاما رو* به پروژه اضافه کنید.
روش استفاده :
ابتدا تابع زیر را در قسمت imp پروژه قرار دهید :
کد:
کد:function delete_kama( s : String):string;
var p:Integer;
begin
for p:=1 to length(s) do
if s[p]="," then
delete(s,p,1);
delete_kama:=s;
end;
سپس به صورت زیر مثلا در یک DBEdit از آن استفاده می کنیم و همچنین 3 عدد 3 عدد ، اعداد را جداسازی می کنیم:
کد:
کد:procedure TMain.DBEdit1Change(Sender: TObject);
var i:integer;mystr,s:string;
begin
s:=",";
if DBEdit1.Text<>"" then
begin
mystr:="";
mystr:=delete_kama(DBEdit1.Text);
i:=length(mystr);
while i>3 do
begin
insert(s,mystr,i-2);
i:=i-3;
end;
mystr:=mystr;
DBEdit1.Text:=mystr;
DBEdit1.SelStart:=length(mystr);
end;
end;
موفق و موید باشید
البته روش زیر هم هست که روشی استاندارد و استفاده از توابع خود دلفی میباشد.
کد:FormatCurr('#0,',StrToCurr(edit1.text));