> 先頭から最後まで進む場合は、どうやってテキストの終了を判定する
> cdで取り出した値をckで判別するのが素直なのでしょうか。
> よく利用していたWEBサイトが
> どのように「進む」かが示されていないと,ちょっと難しいですね。
> 「cpを使って」ということなので,物理的なカーソル移動を行わずに末尾の判定をするということでしょうか。
> > よく利用していたWEBサイトが
> どちら?
> …というわけで,以下が参考になりますでしょうか.
> こういった手順もあるということで.
> ただし,行末の改行コードも数えてしまうと思うので,文字のみ加算していくのなら少し工夫が必要かも.
> …というわけで,以下が参考になりますでしょうか.
> テキストを総なめして、ある条件だったら文字を書き換える、というのはどうするのでしょうか。
> 先の処理方法では必ずラインバッファを反映しないで終了させなければならないためです。
> 書き換えるのであれば,カーソルを1文字ずつ移動しての処理になるでしょうか。
> それはなぜ、ということの説明は難しくなってしまうでしょうか。
> 過去のその手のマクロってどんなものがあるのか知りませんが、どれもそんな感じの処理なのでしょうか。だって、そういう処理だとマシン語化が容易ではないでしょ?
> ・ならば、文字列化して処理を行った後、元に戻せばよいのではないか
> z=wa..19.2, ;終端の値を保存 *****
> わかりやすく引導を渡して
> 過去,逐一処理を行うような処理はマシン語化するのが常道だったわけです。それでそういう処理をするマクロは,メモリ上で処理を行うわけですが,VZが普通に扱えるメモリというとラインバッファとかテキストバッファ(セグメントは異なる)になるわけですね。すると,64KBくらいまで。速度的にもそのくらいが限界というわけなのでしょう。
> たぶん,「z」がダウト。
> その前に,より具体的に何をどうしようとしているか解らないと。
> すると、過去の作品で、ファイル全体に対して処理を行うようなマクロって、だいたい64KB制限があったということなのでしょうか。
> それとも、そもそも、ファイル全体に対して処理を行うようなマクロというものは存在しなかった?
> 目的は、あくまでもファイル全体を走査すること。
> あったとは思いますが,まるまる置き換えるような処理というと,他に想像がつきません。何かネタがありますかね〜。
> 64KBを超えるファイルであっても,次のような手順でできると思います。
> 走査して取得したチェックサム様の値をどこに吐き出すかが問題ですが。
> #> #d (r)? >C; 次行へ
> こんなコードも使ってある。
> なるほど、やっぱりこれが常套手段なわけなのですね。
> &mで表示します。
> ふむ。ところで1バイトのチェックサムって,行単位ではなくてファイル単位ですか? 256分の1で一致することになるってのは,やや(相当猛烈に)心許ないチェックになりませんか?
> ・文字コードが$20以上の場合、最下位ビットを反転(c=c^1)
> 確か、イベントマクロの場合は使えないコマンドだったか関数だったかが
> この$20以上というのは,何か確信があってのことなのでしょうか。あ,制御コードをナニすると,例えば改行コードが改行コードでなくなると,ラインバッファをあふれる可能性があるということなのかなー。
> で,本文が1バイトの連続の場合は1ビット反転の暗号化というのがばれちゃうかもしれないですね。
> イベントの制限については,製品版付属のmac16.docを参照してください。
> だから、練習用なんですってば。
> でも、コマンドが全く使えないとなると、かなり制限されてしまいますね。
> ということは、文字コード変換系のマクロは、かなりの大技を
> > ということは、文字コード変換系のマクロは、かなりの大技を
> 文字コード変換はそれほど大技だとは思いません。
> むしろ厄介なのはイベントでしょうね。
> わたしもローテクでJIS/SJIS 変換マクロを使ったこともありますし,暗号とか文字化けとか結構好きでした。
> 1500個のファイルのファイル終端に、条件なしに改行を入れる、というタスクを、Vzマクロで思ったのですが……。
> ディレクトリ一括、なら、イベントを使わなくもできるのですけれど。
> 道具を作るのに時間がかかりすぎるなぁ……。
> 正確には75回、[F12]を押しっぱなしで処理してもらいました。
> 書式整形があるので、まだまだスペルチェックに入れません。固有名詞だらけなので、スペルチェックは1年くらいかかりそうな地獄。
> パナソニック、シャープ、NEC、富士通では家電、足りませんよね。中国製か?
> マークしたファイル名情報を書き出して、それを対象にエディットしてゆくのか……。
>Sedよりマクロのほうがいいことって、何があります?
>それとも、何か省略されている条件があるのでしょうか。
>もしかして、マクロなら時間がかからずに処理できる、と暗に言っているのでしょうか。
>これ,半端無く難しいですよね。
>ファイラから戻らずにスタック用のメモリにでも出力しないと駄目なのかな。
> (1)マークファイルをすべてオープンして、> カーソルを指定行にセットする(当然、マークするのは、TC以下)。ああ,そんな数でよいのですか。でも,それなら参考にして欲しいのが, 上村さんの insfile.def ですね。(自分が貰ったという思い出あり) このマクロはマークするファイルの数はTCの制限を受けません。 ぜひ,参考にしてみて。短いので,貼り付けます。 ----------^ INSFILE.DEF ( date:2001-08-22 time:20:50 ) -----< cut here ======== insfile.def ======== by I.kamimura #if 0 【カーソル位置へ挿入】 ■機能 ●挿入ファイル数にはオープン可能なテキスト数(TC)の制限はありません。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ●挿入した全ブロックを1ブロックとして再現できます。 ●挿入後のカーソル位置(ブロックの先頭/最後)はオプション Ek に依存 します。 ●文字境界ファイル(ファイルの最終行が尻切れ)に対応。ただし、文字境 界ファイルと行境界ファイルを混在して挿入すると、順序が乱れます。 ■テクニカルノート ●&Fl によるファイラー選択では &Fi 不要? ●&Fl によるファイラー選択では 交換可能なドライブ (FDなど)でもマ ークがクリアされない。 #endif * M 8 [ESC]I @I "I カーソル位置へ挿入" ?. (mr==$80)? { &m(36). } ;「変更できません」 (wc==tc)? { &m(6). } ;「オープンできません」 ; #M &m("カーソル位置へファイルを読み込みます") #M &m("[ InsFile ]") n=wn, &Fl(fl+34) &Cr (r)?. &s i-, :A &Fg(pr,1) &m(pr) mx[+, sn[+, pf[=pr, #R #e #m pf], sn], mx], (s)? { #[ #[ >A } #W &#T(n) #W &60 i++, #C &#T(n) &Fn (r)? >A :Z mb-, #b #U (ek)? #B #b &d #] &m(" %d ファイル挿入しました",i) 60: ;---裏窓へファイル全体をコピー--- #^ #< #b #_ (ct)? #> :A (mb)??. &m(" %s : %05u --> %s : %05u",wa+$92,wa..5,wb+$92,wb..5) #k (s==4)? 'y' #W ek[+, #i ek], #W >A * ----------$ INSFILE.DEF ( lines:48 ) -----------------------< cut here #C の前に mr+ しておけば,目的が達せられるのでは?> え、僕はまずレスポンス・ファイルにファイル名だけ書き出して、> そのファイルをオープンすれば、とか、考えていたのですが、、、。> これ、できませんでしたっけ?レスポンスファイルが作成されるタイミングって,どんなんでしたっけ。 なんかすっかり忘れちゃいまして。(^^;
> ああ,そんな数でよいのですか。でも,それなら参考にして欲しいのが,
>上村さんの insfile.def ですね。(自分が貰ったという思い出あり)
>このマクロはマークするファイルの数はTCの制限を受けません。
>ぜひ,参考にしてみて。短いので,貼り付けます。