IntToHexをつかわずに文字列を16進にしたいのですが・・・
x y z→58 59 5A
にしたのです。
コンソールアプリでできればお願いします。
>IntToHexをつかわずに
何で使わないの?もしかして、そういう条件の課題とか...
>コンソールアプリでできれば...
変換関数はコンソールアプリもWinアプリも関係ないと思うけど?
そういうふうにやってくれといわれたのですが。
知識がなく使わないとわからなくて・・・
procedure hex2 (c:char);
??
??
??
という感じです・・・
>そういうふうにやってくれといわれたのですが
もしかして Format関数も使うなと言われたのかい?
x y z ってなんですか?
abcdefg123+-*/
このテキストファイルを下記のように16進として読み込み
61 62 63 64 65 66 67
31 32 33 2B 2D 2E 2F
を出力し先ほどの{procedure hex2}条件を使うとのことです。
難しいでしょうか・・・
出力してからhex2を使うってのが意味不明ですが。
出力するのはできてるの?
IntToHexを使えばできてるんですが。
IntToHexの変わりのようなものをつくれといわれ
それができません・・・
出力してからではなく使うということです・・・!!
変換は下記のような感じで
procedure hex2(C:Char);
var
q, r, n: Byte;
S: String;
begin
S:= '';
q:= Byte(C);
repeat
r:= q mod 16;
q:= q div 16;
if r >= 10 then n:= 55 else n:= 48;
S:= Chr(n + r) + S;
until (q = 0);
if Length(S) < 2 then S:= '0' + S;
end;
ごめんなさい。もっとシンプルにできますね...
procedure Hex2(C: Char);
function _Convert(Value: Byte): Char;
var
n: Byte;
begin
if (Value >= 10) then n:= 55 else n:= 48;
Result:= Chr(n + Value);
end;
var
S: String;
begin
S:= _Convert(Byte(C) shr 4) + _Convert(Byte(C) and $0F);
end;
近づいたような気がします!!
ただテキストファイルの読み込みがうまくいきません・・・
>近づいたような気がします!!
丸ごと全部教えて欲しいってことかな?
>ただテキストファイルの読み込みがうまくいきません
Hex2手続きを文字列を返す関数に変えれば?
> ただテキストファイルの読み込みがうまくいきません・・・
どううまくいかないのか書いたら?
ここでこんな質問するってことは、
課題提出が目的ですよね。(自分で答えたいではないでしょ)
その課題内容を正確に教えてくれたら、ソース丸UPしますよ。
小出しにされたんじゃ、答えるほうも無駄に労力を消費しますからね。
テキストファイルに
abcdefg123+-*/
を入っていたと仮定すると
16進2桁で表示する。
61 62 63 64 65 66 67
31 32 33 2B 2D 2E 2F
がコンソールに出るように
プログラムを作る。
1文字16進2桁で出す部分には
IntToHex関数は使わず、
{procedure hex2(c:char);}条件
というprocedureを使う。
ということです・・・よろしくお願います。
こんな感じかな?
program Project1;
{$APPTYPE CONSOLE}
procedure Hex2(C: Char);
function _Convert(Value: Byte): Char;
var
n: Byte;
begin
if (Value >= 10) then n:= 55 else n:= 48;
Result:= Chr(n + Value);
end;
begin
Write(_Convert(Byte(C) shr 4) + _Convert(Byte(C) and $0F));
end;
var
F: TextFile;
C: Char;
I: Integer;
begin
AssignFile(F, 'Test.txt');
Reset(F);
try
I:= 0;
while not Eof(F) do
begin
Read(F, C);
Hex2(C);
Inc(I);
if (I < 16) then
Write(#32)
else
begin
Writeln('');
I:= 0;
end;
end;
finally
CloseFile(F);
end;
Readln;
end.
どうもかんげきです・・
・・・
読み込むのに1行ごとにとはできますか??
できます。
ここまで答えてもらっているのです。ここからは、HELPで見れば解ると思いますよ。過去ログにもあります。プログラムは、考えることですから。やってみて、話からに場合に再度質問すればいかがですか?
ツイート | ![]() |