テキストを画像で表示するには?

解決


Least  URL  2004-01-06 23:51:12  No: 6534

随分と久しぶりなので、覚えている人は(すでに?!)居ないと思いますが^^;
プログラミング能力が低すぎて、レスが出来ず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)
呼び出す時の引数の記述方法がわからず、あえなく撃沈凹

どなたか知恵を拝借できると、とても嬉しいです。
では、お願いします。。。


にしの  2004-01-07 00:27:40  No: 6535

Copyの第2引数は、1文字目なら1ですよ。
i-1にする必要はないと思います。


Halbow  URL  2004-01-07 00:43:06  No: 6536

Halbow です。

Copy() の戻り値は string 型ですから Ord() できません。
string 型は、Char 型の配列とみなせます。ですから

> Ord(Copy(Text, i - 1, 1)) 

の部分は

Ord(Text[i]) 

となります。

蛇足ですが、Windows ではすべての表示は画像です。Memo や Label の文字列も
画像です。それから、日本語の2バイト文字の処理をどうするつもりですか?


にしの  2004-01-07 00:51:04  No: 6537

Ordの引数は順序型でしたね。
忘れてました^^;

一度、WideStringにしてから1文字切り出し、Stringに直して表示すれば日本語処理を考えずに出来ますよ。
それとも、'0'から':'だけしか扱わないのでしょうか。

Ordを使わずとも、char型は順序型なので、

case Text[i] of
#48..#58: begin
        //絵画処理
  end;
end;
でもよろしいかと。


Least  2004-01-11 10:53:01  No: 6538

レス遅くなってすみません。
迅速な解答、感謝いたします^^
ありがとうございます♪

stringが・・・charとみなせるとは・・・初耳です(滝汗
よくこんな状態で、プログラム組めてました、私w

>>Ord(Copy(Text, i - 1, 1))
書き込む時のミスです(汗


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加