掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
指定したDirのファイル一覧を表示させるには? (ID:44142)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> ちょっとびっくりしたのは、Delphi XE3 だと > uses に、System.IOUtils, System.Types を手書きで追加する > 必要があるのですね。 Delphi に限らず、ほぼすべての言語で同様の作業が必要だと思います。 C / C++ では #include がありますし、C# にも using があるでしょう? [プログラムとユニット (DocWiki)] http://docwiki.embarcadero.com/RADStudio/XE3/ja/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%A8%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88 > フォームに部品をペタペタ貼り付ける Delphi なら > こんな事は必要ないという先入観がありました。 コンポーネントをフォームに貼り付けた場合には、 そのコンポーネントが利用するユニットが自動的に uses に追加されます。 関数やクラスをコード中で使う場合には、 自分で uses 節に追加しなければなりません。 同じ名前の関数やクラス名が複数のユニットに存在する場合、 どちらを参照すればいいのかなんて、コンパイラが判断できる訳ないですからね。 > Delphi は、Fire Monkey が導入され、Mac 対応や、3D の強化、64bit対応、 > また今後は、iOS や アンドロイド対応ということで期待していました。 > Visual Studio と完全におさらばして、 > RAD 1本で行こうかと考えていましたが > もう少し様子を見ようという考えになりました。 uses しなければいけない事と、マルチプラットフォームに何の因果関係があるのでしょう? C++ / C# でも同じような機構があるのに、どうして Delphi "だけ" ダメなのでしょう? 以下に列挙されているユニットを、あらかじめ "すべて" uses 節に記述しておけば、 大抵のものは使えますよ。その結果出来上がったバイナリがどんだけ肥大化していようが知りませんけど。 [ユニット スコープ名] http://docwiki.embarcadero.com/RADStudio/XE3/ja/%E3%83%A6%E3%83%8B%E3%83%83%E3%83%88_%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97%E5%90%8D#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88_.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97 普通は逆なのです。 使いたい機能があるのであれば、それが属するユニット名はその時点で知り得ます。 ですからそれを uses に追加するだけの話なのです。 ところが、Web 等に上がっているコードをコピペすると、 そこで使われている機能 (関数やクラス) がどのユニットに属するのかを自前で調べなくてはなりません。 サンプルコードは実際のプロジェクトの一部を切り出したものだったりするため、 uses 節に追加すべきユニットまでは記載してない事があるからです。 # uses 節に追加すべきユニットが記載されていなくても、 # 情報提供者に文句を言える立場にありません。あなたが情報提供する側だったら、 # 皆が既知の事項をわざわざ何度も書きますか?という話ですから。 そのような場合には $(BDS)\Source 内を Grep するなり (Pro 以上の SKU)、 DocWiki で検索するなりして、属するユニットを探さなくてはなりません。 例えば今回の例だと、 [DocWiki] http://docwiki.embarcadero.com/RADStudio/XE3/ja/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8 TDirectory を検索すると http://docwiki.embarcadero.com/Libraries/XE3/ja/System.IOUtils.TDirectory が見つかります。 親: のリンクを辿ると、属するユニットが判りますし、URL にもそれが含まれています。 同様に TStringDynArray だと以下ですね。 http://docwiki.embarcadero.com/Libraries/XE3/ja/System.Types.TStringDynArray System.Types が属するユニット (名前空間) です。 ちなみに今回の件に関して、 山本隆さんが Delphi でのコードを書いてらっしゃいます。 [DelphiのTDirectory.GetFilesでファイルの一覧を取得する] http://www.gesource.jp/weblog/?p=5959 # 親切だなぁ... (^^;A
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.