【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21936

ファイル選択
投稿者---cunt(2005/07/15 16:56:00)


Linuxのターミナルで動作するファイル操作のプログラムを作成中です。
ファイルをカーソルで選択し、操作したいショートカットキーを押して実行するというプログラムです。
ファイルの情報はstat 構造体で表示することができましたし、
端末制御はtermios でおこなっています。
しかし、肝心のカーソルキーを押すとファイルが選択されるというプログラムが作成できません。
Shift+下カーソルで10個先のファイルを選択させるなどといった動作も取り入れたいと思っています。
私の考えでは、エスケープシーケンスを使いカーソルが押されたことを判定させて、その都度ファイル名を配列に格納するという方法しか思い浮かびません。
エスケープシーケンスは、環境にも依存すると聞いたことがありますので、この方法をとるのはどうかと思っているところです。
もっとスマートなやり方や関数などあれば教えていただけないでしょうか。
環境がLinuxなのでgetch関数などはおそらく使えません。
よろしくお願いいたします。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイル選択 21943 shu 2005/07/15 19:51:31
<子記事> Re:ファイル選択 21947 Ban 2005/07/15 20:52:39
<子記事> Re:ファイル選択 21948 cunt 2005/07/15 21:28:36


No.21943

Re:ファイル選択
投稿者---shu(2005/07/15 19:51:31)


>もっとスマートなやり方や関数などあれば教えていただけないでしょうか。
>環境がLinuxなのでgetch関数などはおそらく使えません。
>よろしくお願いいたします。

UNIXでの getch関数の作り方。というものが載っていたので紹介しておきます。
http://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/function.html#getch


この投稿にコメントする

削除パスワード

No.21947

Re:ファイル選択
投稿者---Ban(2005/07/15 20:52:39)


コンソールの制御は元々標準ではできない環境依存なので、
エスケープシーケンスでもいいような気もしますが。

例えばエスケープシーケンスが動作しない代表OSであるWinNT系では、
>端末制御はtermios でおこなっています。
が動かないと思いますし、ファイルシステムも環境依存なので
>ファイルの情報はstat 構造体で表示することができましたし、
VC などに stat という関数はありませんし...(_stat、_stat64 等で代用



この投稿にコメントする

削除パスワード

No.21948

Re:ファイル選択
投稿者---cunt(2005/07/15 21:28:36)


Resありがとうございます。
Getch関数は使えませんので、termios を使って自作のgetch 関数を作っています。
やはり、ファイルを選択させるプログラムには、エスケープシーケンスという方法しかないのですか。
エスケープシーケンスもLinuxの環境によって使えないコードがあるそうです。
なお、Windowsに移植するといった予定はないので、stat 構造体を使っています。



この投稿にコメントする

削除パスワード

No.21961

Re:ファイル選択
投稿者---Ban(2005/07/16 10:03:42)


> その都度ファイル名を配列に格納するという方法しか思い浮かびません。

ファイル情報は、ディレクトリなどの単位で予め内部にデータとして
保持しておけば、カーソルが押された都度わざわざファイル名を格納する
必要はないように思います。

例えば、ディレクトリ選択時に、ファイル情報が詰まった構造体の配列を
動的に確保。内部に情報を保持。
画面上でキーが押された座標から何番目のファイルが選択されたか計算。
その番号を記録。ファイル名が必要なときは、この番号を配列の
インデクスにして参照。

また、画面制御としては、せいぜい「位置移動」「属性変更(反転など?)」
「キー入力」くらいが動けば実現できるのではないかと思います。
この端末制御さえできれば term で十分で、特にエスケープシーケンスに
こだわる必要はないようにも思いますが、具体的にどのコードが必要と
考えていますか?


# 端末制御用で他に比較的汎用的な方法というと、例えば curses とか。
# 複数環境で使ったことはありませんが、これが使われてるプログラムを
# 考えると現実的に curses が動かないUNIX は多分ないように思います。


この投稿にコメントする

削除パスワード

No.21999

Re:ファイル選択
投稿者---cunt(2005/07/20 11:33:52)


返信ありがとうございます。
座標から選択するファイルを計算するという方法ですか。
勉強になりました。
挑戦してみたいと思います。
どうもありがとうございました。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧