随分と久しぶりなので、覚えている人は(すでに?!)居ないと思いますが^^;
プログラミング能力が低すぎて、レスが出来ずROMなLeastです。。。
今回、ゲームのデザインの大幅な変更を計画してまして、テキストを画像で表示する事になりました。
こんなの簡単だ!って思ってたら・・・思わぬところで壁にぶち当たりました。
procedure TextOut(X, Y: Integer; Space: Integer; Text: String);
var
i: Integer;
begin
for i := 1 to Length(Text) do
case Ord(Copy(Text, i - 1, 1)) of
48..58: begin
//絵画処理
end;
end;
end;
処理方法は、文字コードで処理します。
で、何が問題か・・・そうです、Ord です。
"Text: String"を変えないと無理なんでしょうか?やはり・・・
Char型にするとか。
一度Char型に変えて見たんですが、(Text: array of Char)
呼び出す時の引数の記述方法がわからず、あえなく撃沈凹
どなたか知恵を拝借できると、とても嬉しいです。
では、お願いします。。。
Copyの第2引数は、1文字目なら1ですよ。
i-1にする必要はないと思います。
Halbow です。
Copy() の戻り値は string 型ですから Ord() できません。
string 型は、Char 型の配列とみなせます。ですから
> Ord(Copy(Text, i - 1, 1))
の部分は
Ord(Text[i])
となります。
蛇足ですが、Windows ではすべての表示は画像です。Memo や Label の文字列も
画像です。それから、日本語の2バイト文字の処理をどうするつもりですか?
Ordの引数は順序型でしたね。
忘れてました^^;
一度、WideStringにしてから1文字切り出し、Stringに直して表示すれば日本語処理を考えずに出来ますよ。
それとも、'0'から':'だけしか扱わないのでしょうか。
Ordを使わずとも、char型は順序型なので、
case Text[i] of
#48..#58: begin
//絵画処理
end;
end;
でもよろしいかと。
レス遅くなってすみません。
迅速な解答、感謝いたします^^
ありがとうございます♪
stringが・・・charとみなせるとは・・・初耳です(滝汗
よくこんな状態で、プログラム組めてました、私w
>>Ord(Copy(Text, i - 1, 1))
書き込む時のミスです(汗
ツイート | ![]() |