関数内で配列を使うとうまくいきません。
StrToInt(Format('%',[FloatToStr(Ldexp(1,i))])) →○
StrToInt(Format('%',[FloatToStr(399*(TOPO[1,ITEMP]-ELMIN)/(ELMAX-ELMIN))]))→×
TOPO:array [0..100,0..100] of Real48;と宣言しています。
配列の使用方法が間違っているのでしょうか?
もしくはFormat関数の中身が間違っているのでしょうか?
どうかよろしくお願いします。
うまくいかないとは?
エラーメッセージが出るんでしょうか?
もしそうなら、どんなメッセージでしょうか?
Formatの形式文字列に、'%'のみはあり得ません。必ず変換型文字がつきます。
なので、最初の1文も失敗するはずなのですが、うまくいってしまうのですか?
エラーメッセージなども含めて、もう少し詳しくかかれると、コメントしやすいかと思います。
たかちみえさん、にしのさんありがとうございます。
「'.'が必要な場所に'['があります」とメッセージが出ます。
FloatをIntegerにしたいのですが、
Int関数を使うと戻り値はExtendedなので一度Format関数でStringに
変換してIntegerに変換しようとしています。
'.'が必要な場所に'['があります
このエラーメッセージは単純な構文ミスです。
[や(の数などを確認してみてください。
(確認してみただけでも]が一個抜けてますね)
にしのさんの言うとおり、一個目のコードも問題なんですけど、
いちおう、コードを通ってなければ、エラーにはならないはずなので^^;
ヘルプのFormat型とその形式文字列のページを、
もう一度よく見てみてください。
ごめんなさい^^;見た限りではまったく問題ないですね。
たびたび書き間違えています^^;
"まったく問題ない"と言うのは、"確認しただけでは構文エラーはないですね"と言うことです。
ありがとうございます。
]が抜けているところはどこなのでしょうか?
自分で見てもわからないので教えて頂きたいのですが・・・
Extended型から切り捨ててInteger型にするにはどのようにするのが
スマートなのでしょうか?
わたしもエラーを見てどこだかわからなくなること、よくあります。
だいたいエラーメッセージをクリックしたときにキャレットがそのそばにあうので、
それでわかるんですけど、
少し上の構文エラーが、そこに来て問題を起こしている可能性もあります。
エラー行を含め、ちょっと上も合わせて探して見てください。
どうしても見つからないなら、その辺りをもう一度書き直して見てください。
多分見つかるはずです。
タイトルの内容がふさわしくないと思われるので他のタイトルとして移動します。
たかちみえさん、ありがとうございます。
ツイート | ![]() |