TMemoから基本的な16進数のビューアを作成しようとしていますが、これはおそらく理想的ではないと私は知っていますが、TMemoのワードブロック
(1)
を第一に、メモがそうのような六角情報で満たされているとします
私は無視して、示されている全てのテキストブロックの数を得ることができますどのように空白?だからイメージを使用すると、この場合の結果は28になります。
これは私が試したものですが、メモ行にアクセスしているので完全に間違っているとわかりますが、各文字にアクセスする方法はわかりません。私はここでは、この単純な問題:(
function CountWordBlocks(Memo: TMemo): Integer;
var
i: Integer;
vCount: Integer;
begin
for i := 0 to Memo.Lines.Count - 1 do
begin
if Length(Memo.Lines.Strings[i]) = 2 then
begin
Inc(vCount);
end;
end;
Result := vCount;
end;
を解決するように見えるカント
は、私がメモに六角値を表示するために使用していたコードです:
procedure ReadFileAsHex(const AFileName: string; ADestination: TStrings);
var
fs: TFileStream;
buff: Byte;
linecount: Byte;
line: string;
begin
linecount := 0;
line := '';
fs := TFileStream.Create(AFileName, fmOpenRead);
try
ADestination.BeginUpdate;
try
while fs.Position < fs.Size do
begin
fs.Read(buff, 1);
line := line + IntToHex(buff, 2) + ' ';
Inc(linecount);
if linecount = 16 then
begin
ADestination.Add(line);
line := '';
linecount := 0;
end;
end;
if Length(line) <> 0 then
ADestination.Add(line);
finally
ADestination.EndUpdate;
end;
finally
fs.Free;
end;
end;
(2)
メモをクリックしてテキストブロックがカーソルの下にある場合、選択したブロックが他のすべての番号のどれに含まれているかをどのように知ることができますか?
だから同じ第1の画像を使用して、キャレットが68次トップラインであるので、これはそれほど容易でなければならない28
のうち第三のテキストブロックであるように、結果は3であろうが、私はっきりと考えることができない、私はまだ正しいプログラミングの心を持っていないので、基本的なロジックと問題を解決するために本当に闘争!
(3)
最後Iは、ブロック番号の値を渡すことによって、実行時にブロックを選択したいです。私は多くの成功なしにこれを試してみました:
procedure FindBlock(Memo: TMemo; BlockNumber: Integer);
var
i: Integer;
txt: string;
ThisWhite, PrevWhite: boolean;
vRead: Integer;
begin
txt := Memo.Text;
vRead:= 0;
PrevWhite := True;
for i := 1 to Length(txt) do
begin
ThisWhite := Character.IsWhiteSpace(txt[i]);
if PrevWhite and not ThisWhite then
begin
Inc(vRead);
PrevWhite := False;
end;
PrevWhite := ThisWhite;
if vRead = BlockNumber then
begin
Memo.SelStart := vRead;
Memo.SetFocus;
Exit;
end;
end;
end;
Character.IsWhiteSpaceは何?私は宣言されていない識別子エラーを取得します。私は各行のブロックの数を知らない、それはTMemoの幅になる。質問を編集して16進数を取得するコードを追加します。 –
@Blobby: 'uses'節に' Character'を追加してください。 –
+1私はそのようなユニットについては知らなかった:) –