• ベストアンサー

DELコードって何ですか?

SJISやUNIコードの\x7Fコードですが DELコードとされています。 DELコードとは何でしょうか? \x20のSPCはブランクなのでイメージがつくのですが DELコードは、どういう意味で、どういった使い方をするもので なぜ必要なのかが、さっぱりわかりません。 どなたかご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • noocyte
  • ベストアンサー率58% (171/291)
回答No.6

#3 です. > 例えば、適当にtxtファイルをつくって > ab[del]cd と文字を書くとします。[del:文字パレットで\x7F挿入] > > でも、cといった文字が消えるわけではないですよね? > どういった役割があるのでしょうか? 制御文字にはいくつかの種類があり,使える場所が異なります.その中には テキストファイル内で使える (テキストファイルの中に含める意味がある) ものと,そうでないものがあります. テキストファイルに含める意味がある制御文字としては,CR,LF,HT(TAB) などが あります.これらはテキストの表示方法を制御するので,書式制御文字と呼ばれます. SOH,STX,ETX,EOT などは伝送制御文字と呼ばれ,2つの装置間で通信して (主にテキスト) データを受け渡す際,それを確実に行うための制御に用いられます. 送信側は送信すべきテキストに伝送制御文字を追加して送信し,受信側は受信した テキストから伝送制御文字を削除して元のテキストを抽出します. したがって伝送制御文字は元のテキストには存在せず,通信路上にだけ存在します. では今までの回答にもある,DEL の「1文字削除」はどうかというと,DEL が存在 しているのはキーボードとプログラム (テキストエディタ) の間だけであり, プログラムが扱うテキストファイルの中には (ほとんどの場合) 存在しません. 仮に存在した場合,ASCII としての DEL の意味は #3 に書いたとおりで,その 解釈に従えば DEL はテキスト内にあっても単に無視する (読み飛ばす) のが正しい と言えるでしょう.しかしこの使用法は,既に紙テープとともに役割を終えていると 思います. 現在の使用法はどうかというと,テキスト内に DEL を含める使い方はほとんど 聞いたことがありません.おそらくほとんどのソフトは,そういう使い方を想定 していないでしょう.といっても DEL を使ったからといってクラッシュするという ほどのことはなく,せいぜい画面にゴミが表示される程度でしょう.もしテキスト 内で DEL を使うソフトがあったとしても,その使い方は ASCII とは何の関係も ない「ローカルルール」です.現在では使われなくなった 0x7F というコード位置 を勝手に別の目的に転用しているに過ぎません.したがって共通の使い方や 役割というものはありません. 余談ですが,現在では DEL とほとんど同様に扱われている BS の場合は少し事情が 異なります.BS は現在では「左1文字削除」として使われることが多いのですが, ASCII の本来の意味は "BackSpace" の名前のとおり「印字位置を1文字分後退させる」 という書式制御文字です.したがってテキストファイルの中に含める意味があり, 例えば昔の UNIX のオンラインマニュアルの中には次のようなテキストが多用されて いました.(今はどうか知りません.)   _<BS>U_<BS>N_<BS>I_<BS>X これをタイプライタやプリンタなど,文字の重ね打ちが可能な出力装置に出力した 場合,下線付の "UNIX" が印字されます.(実際には下線表示機能のあるテキスト 画面にも表示できるようになっていました.) 最後に一言.ASCII としての DEL と,テキストエディタなどの「1文字削除」は, 実は何の関係もありません.そもそも ASCII の制御文字には,テキストエディタ の編集機能に対応するものはありません.すべてのキーボード入力を文字コード としてテキストエディタに渡す場合,今は使われていない DEL コードの「名前」 が,たまたま「1文字削除」を割り当てるのにピッタリだったというだけのことです. コンピュータの漢字コード http://x68000.q-e-d.net/~68user/tmp/knj-tut.txt → 機能キャラクタ(制御記号)

その他の回答 (5)

  • okg00
  • ベストアンサー率39% (1322/3338)
回答No.5

1のお礼に書いている、そのとおりの動きをします。 LFやタブもそうなんですが、1文字ずつ最初の文字から印字していって制御文字の所でカーソルの移動やベルを鳴らしたりします。 たとえば 123[LF+CR]456 とあったとすると実際に表示される文字は 123 456 となります。文字と文字列を厳密に分けて考えてください。すべての文字の表示は1文字ずつ行われていると。

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.4

制御文字の類は、一般的には操作する人間ではなくOSが 押下したキーボードに対応する制御コードに応じた処理 をするのに使用されます。 プログラムで使用する際には、キーボードの入力を検知 する関数やイベント処理内で、DELコードが入力されたか の判断を行い、対応する処理を実行する様に、プログラム を作成します。

  • noocyte
  • ベストアンサー率58% (171/291)
回答No.3

DEL コードの「現在の」使い方については既に回答があるので, 元々の意味について書いてみます. ASCII の DEL コードが 0x7F で,NUL コードが 0x00 となっているのには 必然性があります.これらは紙テープを使っていた頃の名残です. 紙テープは穴が空いていれば '1',そうでなければ '0' としてデータを 記録するので,まだデータが書き込まれていない紙テープは全ビットが'0', つまり 0x00 です.そこでこれを無視してよい (まだ文字が書かれていない) データつまり NUL として定義します. 逆に紙テープに記録された文字を削除したい場合,専用の器具を使って 全ビットに穴をあけてしまいます.つまり 0x7F で,これを削除済 (DEL) と定義します. 紙テープ時代には,NUL と DEL はどちらも無視してよいデータだったわけです. 半角文字 - ASCII コード http://homepage2.nifty.com/k_maeda/code/ascii.html → NUL と DEL:Null (空文字)、Delete (削除) 紙テープ (Wikipedia) http://ja.wikipedia.org/wiki/%E7%B4%99%E3%83%86%E3%83%BC%E3%83%97

phoenix062
質問者

お礼

成り立ちはわかりました。ちょっと震えがくるほど感動しました。 ありがとうございます。 でも、現在の使い方がちょっとまだわかりません。 No1のかたに書いたとおりです。

  • SRitchie
  • ベストアンサー率21% (103/470)
回答No.2

deleteです。 現在のポインタ(カーソル位置)の1キャラクタを削除

phoenix062
質問者

お礼

ありがとうございます。1の方の回答と同じになってすみません。 やはり使い方がちょっと不明です。 例えば、適当にtxtファイルをつくって ab[del]cd と文字を書くとします。[del:文字パレットで\x7F挿入] でも、cといった文字が消えるわけではないですよね? どういった役割があるのでしょうか? CRなどは、実際に改行されているのが目で見てわかるので 理解しやすいのですが・・・

  • okg00
  • ベストアンサー率39% (1322/3338)
回答No.1

http://q.hatena.ne.jp/1170426456 http://e-words.jp/w/E588B6E5BEA1E69687E5AD97.html http://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E6%96%87%E5%AD%97 制御文字ですね。DELはカーソルのすぐ右の文字を削除する場合に使用します。CRで改行するのと同じイメージです 昔のコンソール端末だと、たとえばBELを表示すると文字通りベル(ビープ音)がなったりして楽しかったですねえ。

phoenix062
質問者

お礼

ありがとうございます。なんとなく判るのですが、 やはり使い方がちょっと不明です。 例えば、適当にtxtファイルをつくって ab[del]cd と文字を書くとします。[del:文字パレットで\x7F挿入] でも、cといった文字が消えるわけではないですよね? どういった役割があるのでしょうか? CRなどは、実際に改行されているのが目で見てわかるので 理解しやすいのですが・・・

関連するQ&A