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

如何將16進位元內碼轉換後顯示出中文字

答題得分者是:jow
conchih
一般會員


發表:41
回覆:33
積分:14
註冊:2003-06-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-09-21 10:40:41 IP:210.243.xxx.xxx 訂閱
各位前輩:

小弟是初學者
用搜尋看了許多文章仍找不到答案(可能是問題太基本了)

目前讀取一個檔案,其為binary code,非一般的文字檔
但資料讀進來後,其中有些是一般的數字,有些是內碼
請問我要將內碼存在什麼樣的變數型態?並使用何種轉換函數才能讓其顯示出中文字來

這是我用UltraEdit看見的碼
例如:A5 78是台
A8 C8是亞

不知問題描述的是否清楚

先感謝各位前輩

草門佳

暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-09-21 12:02:31 IP:211.77.xxx.xxx 未訂閱
文字檔?文字檔也是一種 binary code,
什麼是內碼?也是一種 binary code,
65 可以是數字。也可以是文字。
它在電腦中都是存成 65(十進位)
不過當你把它當文字解讀時,它是字母的 a
你把它當數字解讀時,它是 65。
當你用十六進位來解讀這個數時。它是 41
所以。你到底在問什麼?

===================引 用 conchih 文 章===================
目前讀取一個檔案,其為binary code,非一般的文字檔
但資料讀進來後,其中有些是一般的數字,有些是內碼
請問我要將內碼存在什麼樣的變數型態?並使用何種轉換函數才能讓其顯示出中文字來

這是我用UltraEdit看見的碼
例如:A5 78是台
A8 C8是亞

不知問題描述的是否清楚
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-09-21 12:51:21 IP:210.66.xxx.xxx 訂閱
你應該先確認你的檔案格式.

今早剛剛上傳的範例,多做些練習吧

http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=90531
conchih
一般會員


發表:41
回覆:33
積分:14
註冊:2003-06-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-09-21 14:07:03 IP:210.243.xxx.xxx 訂閱
抱歉,小弟對這行不是很懂,所以表達不佳,無法讓大大們看懂
我將檔案格式(在ultra-edit底下看到的)貼上,並附上檔案

問題就是如何將富 邦這三個字讀出並顯示出來
至於前面的股票代碼的部份我已經會用TFILESTREAM的方式讀出了

感謝大大們

img230.imageshack.us/my.php?image=namegi7.jpg

conchih.myweb.hinet.net/stockname.dat

編輯記錄
conchih 重新編輯於 2007-09-21 14:13:04, 註解 無‧
conchih 重新編輯於 2007-09-21 14:44:13, 註解 無‧
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-09-21 14:49:37 IP:210.66.xxx.xxx 訂閱
(1)檔頭Offset=5
(2)RecSize=11, 取前面6個Byte(三個中文字)


procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
F: TMemoryStream;
B: array[0..5] of Char;
L: TStringList;
begin
if FileExists('D:\STOCKNAME.DAT') then
begin
F := TMemoryStream.Create;
try
F.LoadFromFile('D:\STOCKNAME.DAT');
L := TStringList.Create;
try
I := 0;
while F.Position < F.Size do
begin
F.Position := 5 11 * I;
if F.Read(B, SizeOf(B)) = SizeOf(B) then
L.Add(Trim(B));
Inc(I);
end;
ListBox1.Items.Text := L.Text;
finally
FreeAndNil(L);
end;
finally
FreeAndNil(F);
end;
end;
end;
編輯記錄
jow 重新編輯於 2007-09-21 15:00:30, 註解 無‧
jow 重新編輯於 2007-09-21 15:00:51, 註解 無‧
conchih
一般會員


發表:41
回覆:33
積分:14
註冊:2003-06-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-09-21 15:30:09 IP:210.244.xxx.xxx 訂閱
感謝jow大大
讀檔成功了

也感謝暗黑破壞神版主
從你的回覆我也向公司的mis問了一些問題
又吸收一些觀念

謝謝二位大大
系統時間:2024-05-20 14:33:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!