PDA

View Full Version : عیب این کد کجاست؟



omidan321
سه شنبه 30 مهر 1392, 07:58 صبح
من یه قطعه کد دارم که نمی دونم چطور میشه که ج نمیده ،
کد به این صورته == از پورت سریال یه دیتایی وارد میشه برای ترجمه وارد یک پروسیجر دیگه میشه بعد از اون بخش هایش وارد یک فانکشن برای تبدیل مبنایی میشه این قسمت اخرشو گیر کردم نمیدونم چیکارش کنم

ای قسمت مین برنامه هست که اطلاعات رو برای ترجمه به پروسیجر ارسال می کنه

if str_char ='16' then
begin
translate(str_end,err);
edit2.Text :=inttostr(err);
end


اینم پروسیجر ترجمه هست که باز خودش به چند فانکشن دیگه گریز میزنه
اخرین گریز که برای تبدیل عدد بایناری به دسیمال هست ج نمیده


procedure translate(str_end:string; err:integer);
var cf,cf_bin,cf_fcv,cf_fun:string;
cf_fun_dec:integer ;
begin
cf:=copy(str_end,5,2);
cf_bin :=HexToBin(cf);
cf_fun :=copy(cf_bin ,5,4);
cf_fun_dec:=BinToInt(cf_fun);
cf_fcv :=copy(cf_bin ,4,1);

err:=cf_fun_dec ;
end;




اینم قسمت اخر برنامه منه که به فانکشن bintoint ارسال شده است ولی پاسخی به من نمیده ، جالب اینجاست که توی یک برنامه دیگه تستش کردم جواب داد ولی توی برنامه اصلیجواب نمیده


function BinToInt(Value: String): LongInt;
var i: Integer;
begin
Result:=0;
//remove leading zeroes
while Copy(Value,1,1)='0' do
Value:=Copy(Value,2,Length(Value)-1) ;
//do the conversion
for i:=Length(Value) downto 1 do
if Copy(Value,i,1)='1' then
Result:=Result+(1 shl (Length(Value)-i)) ;
end;



من نظرم اینه که توی به کار گیری فانکشن تبدیل بایناری به دسیمال دارم اشتباه می کنم . کجاش رو نمیدونم
منتظر نظرات اساتید هستم