全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2388
推到 Plurk!
推到 Facebook!

請問一個二進位轉十進位的東西

尚未結案
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-26 16:00:09 IP:210.60.xxx.xxx 未訂閱
function BinToInt(Value: string): Integer; var i, iValueSize: Integer; begin Result := 0; iValueSize := Length(Value); for i := iValueSize downto 1 do if Value[i] = '1' then Result := Result (1 shl (iValueSize - i)); end ; procedure TForm1.Button2Click(Sender: TObject); begin edit5.Text:=BinToInt(inttostr(edit1.Text)); end;run的時候有錯耶,可否請高手教教我,還有 function UnicodeEncode(Str:string;CodePage:integer):WideString; var Len:integer; begin Len:=Length(Str) 1; SetLength(Result,Len); Len:=MultiByteToWideChar(CodePage,0,PChar(Str),-1,PWideChar(Result),Len); SetLength(Result,Len-1); //end is #0 end; procedure TForm1.Button1Click(Sender: TObject); begin edit1.Text:=UnicodeEncode(edit2.Text); end;這是轉成UnicodeEncode也會有錯耶,可否教教我,我是一位新手,不好意思。
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-26 22:16:47 IP:220.132.xxx.xxx 未訂閱
Hi, BinToInt 是傳入 string 型別的變數, 所以你改為: edit5.Text:=BinToInt(edit1.Text); 即可, 而 UnicodeEncode 傳入兩個變數, 你只傳入了一個所以會有問題, 改為 edit1.Text:=UnicodeEncode(edit2.Text, 950); 即可, 其中 950 為繁體中文 big5 的 mbcs 的 codepage 值!
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-27 01:38:08 IP:210.60.xxx.xxx 未訂閱
edit5.Text:=BinToInt(edit1.Text); string and integer error edit2.text:=inttobin(edit7.text); integer and tcaption error
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-27 09:15:08 IP:218.15.xxx.xxx 未訂閱
引言:
edit5.Text:=BinToInt(edit1.Text); //BinToInt过程返回的是整数,所以得改为edit5.Text:=IntToStr(BinToInt(edit1.Text));
string and integer error    edit2.text:=inttobin(edit7.text);
integer and tcaption error    上面代码没见有此句,提示的错误也是指类型不符合,相应改成这样试试
edit2.text:=IntToStr(inttobin(edit7.text));
仔细检查各过程所返回的值类型。
其他的应该没什么问题了。
插花 >[>]..>[/>] <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================ 發表人 -
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-27 20:35:28 IP:210.60.xxx.xxx 未訂閱
function IntToBin(Value: Longint; Digits: Integer): string; var i: Integer; begin Result := ''; for i := Digits downto 0 do if Value and (1 shl i) <> 0 then Result := Result '1' else Result := Result '0'; end; edit2.text:=IntToStr(inttobin(edit7.text)); integer and tcaption error 教教我高手?
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-27 23:02:12 IP:220.132.xxx.xxx 未訂閱
麻煩你自己確認一下傳入的資料型態及傳回的資料型態對應, 你的程式碼
function IntToBin(Value: Longint; Digits: Integer): string;
var i: Integer;
begin
  Result := '';
  for i := Digits downto 0 do
    if Value and (1 shl i) <> 0 then
      Result := Result   '1'
    else
      Result := Result   '0';
end;    edit2.text:=IntToStr(inttobin(edit7.text));
其中的後面使用部分, IntToBin 的第一個傳入值是 Longint, 指要轉換的數字, 第二個傳入值是 Integer, 指的是 binary 的長度, 傳回值是 string, 所以你要改為 edit2.text:= IntToBin(StrToInt(edit7.text), 8); 由於 edit7.text 及 edit2.text 皆為 TCaption 也就是 string 的型態, 所以在處理上要以 string 的方式處理!!
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-27 23:03:37 IP:219.129.xxx.xxx 未訂閱
您好: 改为如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
  edit2.text:=IntToBin(StrToInt(edit1.text),7);
end;
function TForm1.IntToBin(Value: Longint; Digits: Integer): string;
//返回的是string,无须转,但Value是长整型需转
var
  i: Integer;
begin
  Result := '';
  for i := Digits downto 0 do
    if Value and (1 shl i) <> 0 then
      Result := Result   '1'
   else
      Result := Result   '0';
end;
参考看看 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
系統時間:2024-11-22 11:31:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!