喫茶XRAYトップページ


[12139] plQueryPrevについて返信 削除
2018/8/14 (火) 10:45:43 peterpan
XRAYさん,いつも貴重な情報で助かっています。

今回XRAYさんの作品「plQueryPrev」コンポーネントをインストールし,ビルドしたところ次のようなメッセージ表示されエラーとなりました。

[dcc32 エラー] plQueryPrev.pas(1677): E2003 未定義の識別子 : 'CurrencyDecimals'

調べてみると「CurrencyDecimals」は  System.SysUtilsユニットで定義されているようです。
このユニットは uses に記述されていることも確認しました。

これ以上は私の力では原因を追求することはできません。

よろしければ対処方法をご教示ください。


[12140] Re:plQueryPrevについて返信 削除
2018/8/14 (火) 12:28:05 Mr.XRAY
> [dcc32 エラー] plQueryPrev.pas(1677): E2003 未定義の識別子 : 'CurrencyDecimals'

1677 行目,これですね.

          if FieldTyp = ftCurrency then begin
            {$IF CompilerVersion >= 24.0}
            Digit  := FormatSettings.CurrencyDecimals;  //***** ここ//
            {$ELSE}
            Digit  := CurrencyDecimals;
            {$IFEND}
            Result := CurrToStrF(PrnValue, ffCurrency, Digit);

多分,使用している Delphi のバージョンではこの記述は使用できないのです.
さて,どのバージョンからか... XE7 か ?
FormatSettings の仕様が変更されているハズです.
後で調べてみますが,とりあえず
Digit には 0 を代入しておけばいいのではないかと思います.



[12141] Re2:plQueryPrevについて返信 削除
2018/8/14 (火) 13:15:54 Mr.XRAY
> FormatSettings の仕様が変更されているハズです.
> 後で調べてみますが,とりあえず


以下のコードで確認しましたが,Dephi XE(UP1) Pro, XE5(UP2) Pro, XE7 Pro, [
10.2.3 Tokyo Community には CurrencyDecimals がありますね.う〜む.

procedure TForm1.Button1Click(Sender: TObject);
var
  LText : string;
begin
  LText := IntToStr(FormatSettings.CurrencyDecimals);
  MessageBox(Handle, PChar(LText), '結果', MB_ICONINFORMATION);
end;


[12142] Re3:plQueryPrevについて返信 削除
2018/8/14 (火) 14:17:02 igy
ちなみに、peterpan さんがお使いのDelphiのバージョンは、XE8 Enterprise版 ですか?
(Delphi Forumに書き込んでいる方と同じであれば・・)


[12143] Re4:plQueryPrevについて返信 削除
2018/8/14 (火) 14:42:31 igy
Delphi XE8 Starter版 で試したところ、

var
  LText : string;
begin
  LText := IntToStr(FormatSettings.CurrencyDecimals);
  MessageBox(Handle, PChar(LText), '結果', MB_ICONINFORMATION);
end;

は、コンパイルできました。

そして、"FormatSettings."を外してコンパイルすると、確かに、

> E2003 未定義の識別子 : 'CurrencyDecimals'

が出ますね。


[12144] Re5:plQueryPrevについて返信 削除
2018/8/14 (火) 15:05:44 Mr.XRAY
> そして、"FormatSettings."を外してコンパイルすると、確かに、
>
> > E2003 未定義の識別子 : 'CurrencyDecimals'
>
> が出ますね。


これなんですが,Delphi XE3 で変更がありました.

[ XE3 向けに行われた RTL の変更点 ]
http://docwiki.embarcadero.com/RADStudio/XE5/ja/Delphi_XE3_%E3%81%8A%E3%82%88%E3%81%B3_C%2B%2BBuilder_XE3_%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD#XE3_.E5.90.91.E3.81.91.E3.81.AB.E8.A1.8C.E3.82.8F.E3.82.8C.E3.81.9F_RTL_.E3.81.AE.E5.A4.89.E6.9B.B4.E7.82.B9

Delphi XE3 の CompilerVersion は 24.0 なので
   {$IF CompilerVersion >= 24.0}
で間違いないと思うのですが...


[12145] Re6:plQueryPrevについて返信 削除
2018/8/14 (火) 15:43:55 igy
▼ Mr.XRAYさん
> Delphi XE3 の CompilerVersion は 24.0 なので
>    {$IF CompilerVersion >= 24.0}
> で間違いないと思うのですが...


XE8で確認したところ、CompilerVersionの部分も問題ありませんでした。(10.1 Berlinでも同様。)

となると、peterpan さんのDelphiのバージョンなどの情報待ちですかね・・


[12146] Re7:plQueryPrevについて返信 削除
2018/8/14 (火) 16:01:59 Mr.XRAY
> となると、peterpan さんのDelphiのバージョンなどの情報待ちですかね・・

ですね.
確認のために Delphi 10.2.3 Tokyo Community に TplQueryPrev をインストール
してみました.一部エラーが発生しましたが問題部分ではありませんでした.
(インストールしたユニットファイルは plQueryPrevReg.pas)

エラーが発生したのは plQueryPrevReg.pas です.
BDE と BDE 関係のコントロールがないと発生するエラーでした.
これは後で修正して UP する予定です.


[12147] Re:plQueryPrevについて返信 削除
2018/8/14 (火) 16:46:52 peterpan
外出していました。
たくさんの書き込みありがとうございました。

私が使用しているのは Delphi 10.2.3(TOKYO) です。

エラー箇所は下記のとおりです。

----------------------------------------------
    //書式指定なし
    if FieldFmt = '' then begin
      //金額型
      if FieldTyp = ftCurrency then begin
        Digit  := CurrencyDecimals;   //<------ここでエラー
        Result := CurrToStrF(PrnValue, ffCurrency, Digit);
      //金額型以外
      end else begin
        Result := CurrToStrF(PrnValue, ffGeneral,0);
      end;
    //書式指定あり
    end else begin
      Result := FormatFloat(FieldFmt, PrnValue);
    end;
----------------------------------------------


なお,念のため「FormatSettings.」を付加して

   //金額型
   if FieldTyp = ftCurrency then begin
     Digit  := FormatSettings.CurrencyDecimals;
     Result := CurrToStrF(PrnValue, ffCurrency, Digit);

とするとエラーが出なくなりました。
ご報告まで。



[12148] Re2:plQueryPrevについて返信 削除
2018/8/14 (火) 16:55:30 Mr.XRAY
▼ peterpanさん

> エラー箇所は下記のとおりです。

えっ !?
サイトからダウンロードして確認しました.

> とするとエラーが出なくなりました。
> ご報告まで。


申し訳ありません.私のミスです.
後で修正版を UP します.

# 開発時動作確認が Delphi XE となっているからいいのか ? (苦笑)


[12149] Re3:plQueryPrevについて返信 削除
2018/8/14 (火) 17:21:18 peterpan
▼ Mr.XRAYさん
> ▼ peterpanさん
>
> 申し訳ありません.私のミスです.
> 後で修正版を UP します.


そうしてくださると助かりますm(_'_)m

>
> # 開発時動作確認が Delphi XE となっているからいいのか ? (苦笑)


ま,そういうことです(^^)v

[12150] 修正版 UP しました返信 削除
2018/8/14 (火) 17:56:34 Mr.XRAY
▼ peterpanさん

> ま,そういうことです(^^)v

何と寛大な.. (涙)
皆さんがそうであると嬉しいのですが... (^^;
igy さん,おさがわせしてスミマセンでした m(_ _)m

修正版アップしました.変更内容は以下で確認してください.
BDE がなくてもインストール可能になりましたが,
添付のテストプログラムは BDE を使用していますのであしからず.
気が向いたら修正します.

http://mrxray.on.coocan.jp/Delphi/plQueryPrev/History.htm#end


INCM/CMT
Cyclamen v3.82