PDA

View Full Version : تبدیل رشته ی كاراكتری به عدد



حسین خانی
دوشنبه 30 شهریور 1388, 14:47 عصر
با سلام خدمت دوستان
یک رشته ی کاراکتری داریم که توش از عدد و کاما پر شده !
چطوری میشه اعداد رو جدا کرد و داخل متغیری از نوع integer ریخت ؟
با تشکر http://static.cloob.com//public/images/smiles/16.gif

babakmomeni
دوشنبه 30 شهریور 1388, 17:21 عصر
با سلام خدمت دوستان
یک رشته ی کاراکتری داریم که توش از عدد و کاما پر شده !
چطوری میشه اعداد رو جدا کرد و داخل متغیری از نوع integer ریخت ؟
با تشکر http://static.cloob.com//public/images/smiles/16.gif

سلام. راه حل کلاسیک (بخوانید مبتدی!) این داستان رو توی کد زیر آوردم. دوستان اگه روش سریعتری پیشنهاد بدن بنده هم فیض خواهم برد.


var
scommadelimited, strimmed: string;
i: integer;
begin
strimmed:='';
scommadelimited:=edit1.Text;
for i:=0 to length(scommadelimited)-1 do
if (scommadelimited[i] in ['1','2','3','4','5','6','7','8','9','0']) then strimmed:=strimmed+s[i];

end;
توضیحات: scommadelimited رشته ورودی شامل اعداد و بقیه آلاینده ها (!!!)
strimmed : رشته پاک شده که می توان آن را با strtoint به عدد integer تبدیل کرد

Hamid.Kad
دوشنبه 30 شهریور 1388, 19:44 عصر
بجای

['1','2','3','4','5','6','7','8','9','0']
میشه نوشت

['0'..'9']:لبخندساده:

vcldeveloper
سه شنبه 31 شهریور 1388, 00:43 صبح
var
Temp : string;
...
Temp := StringReplace(MyString,',','',[rfReplaceAll]);
MyNumber := StrToInt(Temp);

raeisi_15494
جمعه 03 مهر 1388, 22:32 عصر
با سلام
من یه تابع ساختم و توبرنامه ام از اون استفاده میکنم
publce
function strtoval(StrSource: String): real;

implementation
function strtoval(StrSource: String): real;
var e: Integer;
num:real;
begin

while e<>0 do begin
val(strsource,num,e);
delete(strsource,e,1);
end;
Result:=num;
end;

Hamid.Kad
شنبه 04 مهر 1388, 22:44 عصر
با سلام
من یه تابع ساختم و توبرنامه ام از اون استفاده میکنم
publce
function strtoval(StrSource: String): real;

implementation
function strtoval(StrSource: String): real;
var e: Integer;
num:real;
begin
StrSource:='0'+StrSource;
while e<>0 do begin
val(strsource,num,e);
delete(strsource,e,1);
end;
Result:=num;
end;

این کد درست کار نمیکنه. برای اعداد منفی اون صفری که اضافه کردید کار رو خراب میکنه. e هم باید مقدار دهی بشه یا از Repeat...until استفاده کنید.