對於UltraEdit的疑問 |
|
adonis
高階會員 發表:140 回覆:258 積分:159 註冊:2002-04-15 發送簡訊給我 |
1.最近常用UltraEdit來觀看一些內容。突然有一種想法,每次一打開某檔案時,它會將其所有的內容都秀出來,尤其是當檔案比較大時且有需用的部份並不多的時候,覺得有點浪費,不知如要寫這樣的小功能時,如何去控制可以隨自己的需求從第幾個位元讀到第幾個位元,不知大家有什麼看法?一同討論看看。 2.對右半部的顯示若沒錯的話是對應到左邊的ASCII碼,不知DELPHI中有什麼函數可以轉ASCII碼成對應的字元,若遇到中文時也能正常對應嗎? 我對DELPHI的接觸時間並不長,學這工具也是一個蠻巧合的緣由,但不知為何使用起來蠻上手的,對於一個從來都沒碰過實際寫程式的我來說,這算是一個親和力高的軟体。而在自我學習的方向上,我都把它定位在看別人的功能來反觀如何去達成,所以才又會有上述的問題,希望在這方面有長才及先進們能多給我們指點指點和方向,在共同學習中的成長,我想是最踏實的,謝謝。
------
我也在努力學習中,若有錯謬請見諒。 |
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
Hello~~Friend 小弟自己試了一下
1.就小弟所以可用Read或BlockRead這兩個函數去讀檔中的文字,
皆須配合迴圈.
2.將讀進來的文字以IntToHex(Ord(InWord[i]), 2)的方式轉成十六進位碼後
再顯示出來. 以下是我試的Code 請不吝指教
procedure TForm1.Button1Click(Sender: TObject); var F1 : File; x, y : integer; Buf : array[1..1024] of char; ReadNum : integer; begin RichEdit1.Lines.Clear; RichEdit2.Lines.Clear; RichEdit3.Lines.Clear; AssignFile(F1, Edit1.Text); x := 0; y := 0; try Reset(F1, 1); Repeat BlockRead(F1, Buf, SizeOf(Buf), ReadNum); WriteToGrid(x, y, Buf, ReadNum); Until (ReadNum = 0) or (ReadNum < 1024); WriteToGrid(x, y, Buf, ReadNum); finally CloseFile(F1); end; end; procedure TForm1.WriteToGrid(var x, y: integer; InWord: array of char; AllLength : integer); var i, j : integer; Str, str2 : String; begin Str := ''; Str2 := ''; //FillChar(Str, 1024, ' '); j := 1; for i := 1 to Alllength do begin if ((Ord(InWord[i]) >= $41) and (Ord(InWord[i]) <= $60)) or ((Ord(InWord[i]) >= $61) and (Ord(InWord[i]) <= $80)) then Str := Str InWord[i] else Str := Str '.'; Str2 := Str2 IntToHex(Ord(InWord[i]), 2) ' '; inc(j); if (j mod 16) = 0 then begin Str := Str #13#10; Str2 := Str2 #13#10; end; end; RichEdit2.Lines.Text := RichEdit2.Lines.Text Str2; RichEdit3.Lines.Text := RichEdit3.Lines.Text Str; end;
------
我不是高手, 高手是正在銀幕前微笑的人. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |