~katsuhiko メッセージボード

back 2001-2050

2051-2100

2101-2150


2100 メールリンク コメント数:  0件
  本田勝彦 2002/03/09 (土) 23:37
スパムメール防止策として、すべてのページから mailto リンクを はずしました。防止されるかどうかは疑問なのですが。

mailto なページを新設してそこへリンクするようにしてあります。
掲示板の過去ログからもメールリンクをはずしました。
掲示板に書き込まれる時のメールアドレス入力も任意に設定し直してあります。
スパムメールいや〜んな方は、メールアドレス無しでご記入下さい。
効果を保証するものではありませんが。



2099 Re^4: TOleddEditor全角文字と自分内でD&D コメント数:  0件
  飛龍++  | 2002/03/05 (火) 23:51
 http://member.nifty.ne.jp/~hiryu/index.htm
> あ゛url 書いてありましたね(^^ゞリンクさして下さいまし。

あ、ありがとうございます。むしろこちらからお願いしなければいけない感じです(汗 というわけでうちのサイトからリンクしました。今後もよろしくお願いします。



2098 Re^2: [EOF] が画面の上左端にきてしまいます。 コメント数:  0件
  editor Fan   | 2002/03/05 (火) 23:09
 丁寧なレス、ありがとうございます。
> ソースコードは拝見するモノではなく、読みまくっていぢり倒すモノです(^^;
(^^;;;;;)
 まあ、そうでしょうけど私の能力ではTEditorのような大がかりなソース解読は大変です。
 ただheFountain.pasのTFountainParserはとても応用が利きそうですので必死で解析しています。



2097 Re^3: TOleddEditor全角文字と自分内でD&D コメント数:  1件
  本田勝彦  | 2002/03/05 (火) 12:19
あ゛url 書いてありましたね(^^ゞリンクさして下さいまし。



2096 Re: [EOF] が画面の上左端にきてしまいます。 コメント数:  1件
  本田勝彦  | 2002/03/05 (火) 12:16
>  ソースコードを拝見したら

ソースコードは拝見するモノではなく、読みまくっていぢり倒すモノです(^^;

>   { $VScrollMax ... [EOF] が画面上端に行ってしまわないようにする場合}
>   // 0..FList.Count - FRowCount + 1
>   // Value := Max(0, Min(Value, FList.Count - FRowCount + 1)); ※
> という箇所がありましたが、※のコメントを外すだけでよいのでしょうか。

$VScrollMax のキーワードは3ヶ所ありますので、3ヶ所とも対応して下さい。

>  もし、そうなのならなぜこれがデフォルトになってないのか気になります。

当初参考にした Delphi のエディタ部がそうなっていたからです。また、新しい行を画面上部で入力したいという私の趣味も反映されています。



2095 Re^2: TOleddEditor全角文字と自分内でD&D コメント数:  2件
  飛龍++  | 2002/03/04 (月) 20:55
 http://member.nifty.ne.jp/~hiryu/index.htm
> 私も先日発見しまして修正を施しておりましたが、こちらの方が美しいで
> す。

 なるほど安心しました。ありがとうございます。Newバージョンが出るまではこれでいこうと思います。

P.S.
 うちの掲示板もこちらと同じ掲示板システムなので現在やたら重いです…



2094 [EOF] が画面の上左端にきてしまいます。 コメント数:  2件
  editor Fan   | 2002/03/04 (月) 20:55
 以前「文字列の行数に応じて縦スクロールバーをオンオフする」で質問させていただきましたが、あれは私の勘違いでした<(_ _)>。
 で、今回は勘違いしてないと思うのですが…………。
 画面に表示しきれない文字列があって、その文字列のほとんど削除すると、文字列がまだ残っているにもかかわらず [EOF] が画面の上左端にきてしまいます。念のためTEditorを使用している有名なエディタTeraPadとk2Editorでも確認したのですが同じでした。こういうときたとえば秀丸は残っている文字列をきちんと表示します。
 ソースコードを拝見したら
  { $VScrollMax ... [EOF] が画面上端に行ってしまわないようにする場合}
  // 0..FList.Count - FRowCount + 1
  // Value := Max(0, Min(Value, FList.Count - FRowCount + 1)); ※
という箇所がありましたが、※のコメントを外すだけでよいのでしょうか。
 もし、そうなのならなぜこれがデフォルトになってないのか気になります。



2093 Re^2: Drag&Dropで開いたファイルのフルパス コメント数:  0件
  tama   | 2002/03/04 (月) 20:25
> 開く時にどこかに保存する仕組みをこしらえて下さい。

レスありがとうございました。基本的なことがわかっていないので失礼がありましたらすみません。またよろしくお願いします。




2092 Re: 見えた コメント数:  0件
  本田勝彦  | 2002/03/03 (日) 13:15
やっぱり、まだ見られない場合が多いようです。
@homepage でないのは nifty のサーバーの隅っこに追いやられた感じがします。



2091 Re: Drag&Dropで開いたファイルのフルパス コメント数:  1件
  本田勝彦  | 2002/03/03 (日) 13:13
> 「OLE Drag & Drop」で、ドロップして開いたいくつかのファイルのうち
> アクティブなタブのファイルのフルパスはどのようにしたら取得できるでしょうか。

TEditor のサンプルでやっているように、開く時にどこかに保存する仕組みを
こしらえて下さい。



2090 Re: TOleddEditor全角文字と自分内でD&D コメント数:  3件
  本田勝彦  | 2002/03/03 (日) 13:03
> としています。MoveSelection(Row, Col)としたらとりあえず直ったようですが修正はこれでOKでしょうか・・・・??

そうかこれで良いんだ。
私も先日発見しまして修正を施しておりましたが、こちらの方が美しいです。



2089 Drag&Dropで開いたファイルのフルパス コメント数:  2件
  tama   | 2002/03/03 (日) 01:30
 http://www.tcnweb.ne.jp/~tamaki/
tamaと申します。いつもお世話になっております。

「OLE Drag & Drop」で、ドロップして開いたいくつかのファイルのうち
アクティブなタブのファイルのフルパスはどのようにしたら取得できるでしょうか。

よろしくお願いいたします。



2088 TOleddEditor全角文字と自分内でD&D コメント数:  4件
  飛龍++  | 2002/03/02 (土) 22:36
 http://member.nifty.ne.jp/~hiryu/index.htm
はじめまして。飛龍++と申します。
自分で使うアプリケーションにTEditorを組み込んで遊んでおります。
既存のエディタのマクロを使っても出来ないような気の効いた機能を自分専用に組み込めるので大変重宝しております。

で、本題なのですが既出のものでしたら申し訳ありません。
TOleddEditorで自分自身にD&Dしたときの動作なのですが、ドロップするときに全角文字の後ろ半分あたりにドロップすると文字化けが発生してしまいます。
多分ドロップ位置の文字が1バイトづつに分割されてしまっているのだと思います。コピーのときは大丈夫で移動のときのみこの現象は発生します。

何が原因かと思い、hOleddEditor.pasを見ましたところ、TOleddEditor.DropText内で自分のデータで移動のとき

SetRowCol(R, C);
MoveSelection(R, C);

としています。MoveSelection(Row, Col)としたらとりあえず直ったようですが修正はこれでOKでしょうか・・・・??



2087 見えた コメント数:  1件
  本田勝彦  | 2002/03/02 (土) 00:08
ここ、やっと見えました。nifty のメンテナンスは結構手間取ったようですね。

過去ログを整理しようとしたら見えなくなってしまったので焦りました。
危うく未整理発言が500を越えるところだった。前回更新は昨年6月でした(^^;



2086 Re: ユニコード文字列としての選択位置 コメント数:  0件
  Kobayashi   | 2002/02/28 (木) 12:48
 http://www.greenspace.info/
ちょっと泥臭いかもしれませんが、

SelStart:
Length(WideString(Copy(Editor1.Lines.Text, 1, Editor1.SelStart)));
SelLength:
Length(WideString(Editor1.SelText));

で取得できます。



2085 Re^2: スクロールの制御 コメント数:  0件
  wakahara   | 2002/02/28 (木) 12:08
wakaharaです。御返事ありがとうございます。
>
> WM_HSCROLL, WM_VSCROLL メッセージハンドラを override (と言うのかな?)した拡張コンポをこしらえると、スクロールしたことを通知することは出来ると思いますが。
WindowProcを入れ替えてみます。



2084 Re: ユニコード文字列としての選択位置 コメント数:  0件
  本田勝彦  | 2002/02/28 (木) 01:34
> たとえば、「あいう」が入力されていて、「い」が選択されていたら、
> (SelStart)=2
> (SelLength)=1
> を得たいです。

これは私では出来ねぇっすm(_ _)m
ユニコードに詳しい方達からの情報を待ちましょう(^^;



2083 Re: V2.36 Wrapされた行先頭にブランクがある場合 コメント数:  0件
  本田勝彦  | 2002/02/28 (木) 01:33
THTMLFountain で不具合が出るということでしょうか?
少し調べて見ます。ちょっと時間を下さい。



2082 ユニコード文字列としての選択位置 コメント数:  2件
  さえぐさかつゆき  | 2002/02/27 (水) 19:50
こんばんわ。いつもありがとうございます。
SelLength,SelStartは現在シフトJISの文字コードとしての位置のように
思うのですが、これをユニコードの文字の位置として知る方法はありますでしょうか。
たとえば、「あいう」が入力されていて、「い」が選択されていたら、
(SelStart)=2
(SelLength)=1
を得たいです。
WindowsNT系なら、OSでは文字はユニコードとか聞いていたのですが..。
(これもどういう意味なのかいまいちよくわからない。^^;)
よろしくおねがいします。



2081 V2.36 Wrapされた行先頭にブランクがある場合 コメント数:  1件
  かとちん  | 2002/02/27 (水) 17:19
 http://homepage2.nifty.com/t-katochin
タイトルのケースで,パーサが誤動作する不具合があります。
具体的な例では
<BLOCKQUOTE dir=ltr
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT:
_0px">
↑この先頭文字がスペースコードの場合,NextTokenの最初でSkipBlanksしてしまうため,デフォルトのStartTokenProc では,先頭のブランクの桁数を考慮せずに先に進んでしまい,終了タグの評価ができなくなってしまいます。
この例では,FWrappedBytesに5が入ってますので,本来FPは,Inc(FP, FWrappedBytes) で,FPが '>'を指す意図のはずが,SkipBranks 済みの,
'0px">' に対して5を進めてしまうのでEOFに達してしまいます。
次バージョンでの対応よろしくおねがいします。



2080 Re: スクロールの制御 コメント数:  1件
  本田勝彦  | 2002/02/26 (火) 23:35
> また、再描画が必要な部分のみOnDrawLineイベントと同じ処理を行うといった方法はないでしょうか。

んとねぇ(^^;

ユーザーが何らかの方法で画面をスクロールさせる→無効領域が発生する→Windows から WM_PAINT メッセージを受け取る→ Paint メソッドが実行される→ OnDrawLine イベントが発生する。という Windows の仕組みに従っています。

つまり、既に再描画が必要な部分のみ OnDrawLine イベントが発生する仕組みになっています。

スクロールバーによるものだけを除外した場合、ズリーっとスクロールすると何も描画されていない無地の画面だけになりますので、どこまでスクロールさせたかが解らなくなります。

WM_HSCROLL, WM_VSCROLL メッセージハンドラを override (と言うのかな?)した拡張コンポをこしらえると、スクロールしたことを通知することは出来ると思いますが。

OnDrawLine での描画処理を高速化出来るかどうかがキモだと思います。




2079 スクロールの制御 コメント数:  2件
  wakahara   | 2002/02/26 (火) 20:57
はじめまして、よろしくお願いします。wakaharaといいます。
TEditorを使ってエディタを作っているのですが、つまずいていることがあり質問させていただきます。
OnDrawLineイベントにていろいろ処理を行い表示を変えているのですが、大きなファイルを開いた時にはスクロールバーによりスクロールしている最中にOnDrawLineイベントが置き、動作が遅くなってしまいます。
これを解決する為にスクロール途中には描画を行わないといった処理を行いたく、スクロールバーのイベントを入手したいのですが、どのようにすれば良いでしょうか。
また、再描画が必要な部分のみOnDrawLineイベントと同じ処理を行うといった方法はないでしょうか。
よろしくお願いします。



2078 Re^4: どこが削除、挿入されたのか知るには? コメント数:  0件
  さえぐさかつゆき  | 2002/02/25 (月) 10:19

> 前出のコメント中程に
>
> >UpdateList メソッドを利用できないメソッド群について、
>
> の部分にメソッドが列挙されていますので、それらの各メソッドからも
> お望みのイベントを発生させるメソッドを呼び出すようにして見て下さい。
> 頑張ってね。

そうですかぁ。意味わかりました。
UpdateListを使わずに更新してるメソッドがあって、それについては
そこにもイベントを発生させるようにすればいいんですね。
また仕事終わったらがんばります。(笑)
中身もよく出来ているなぁと思ってます。
ありがとうございます!




2077 Re^3: どこが削除、挿入されたのか知るには? コメント数:  1件
  本田勝彦  | 2002/02/24 (日) 23:53
> ヒントありますでしょうか?

読むのぢゃ(笑)

前出のコメント中程に

>UpdateList メソッドを利用できないメソッド群について、

の部分にメソッドが列挙されていますので、それらの各メソッドからも
お望みのイベントを発生させるメソッドを呼び出すようにして見て下さい。
頑張ってね。



2076 Re^2: どこが削除、挿入されたのか知るには? コメント数:  2件
  さえぐさかつゆき  | 2002/02/24 (日) 11:06
>
> TEditor では、行単位で文字列を更新しているので、SelStart レベルで検知するのは難しいと思います。詳しくは、最新版 HEditor.pas の2,018行目からのコメントをご覧下さい。そこに記述されているメソッド群でイベントを発生させることは(行単位ですが)可能だと思います。

最新版の2018行のコメントがよくわからなかったのですが、
TEditorScreenStringsにTEditorの参照をつけてUpdateListの所に
フックさせる関数をつけたのですが、Redo,Undoが上手くいかないです。
ヒントありますでしょうか?
お手数かけてすみません。




2075 Re^2: 他にフォーカスが移った時の選択範囲 コメント数:  0件
  さえぐさかつゆき  | 2002/02/23 (土) 21:43
> > 他のコントロールにフォーカスが移っても、選択範囲を
> > そのまま選択表示させる方法はありますでしょうか?
>
> ?デフォでそういう仕様だったと思います。
> HideSelection プロパティが実装されていないとも言えるのですが(^^;

ありゃ!すいません、デバッグ用のサンプルプログラムにしたら正しく動いて
いたのでソースを追っかけていたら、プログラムExitで選択を解除しておりました。
トホホ!お手間をとらせてしまってすみませんです。m_~_m

普通のエディットは消えるんですが、さすが良い仕様だ〜と感心してます。



2074 Re: 他にフォーカスが移った時の選択範囲 コメント数:  1件
  本田勝彦  | 2002/02/23 (土) 21:38
> 他のコントロールにフォーカスが移っても、選択範囲を
> そのまま選択表示させる方法はありますでしょうか?

?デフォでそういう仕様だったと思います。
HideSelection プロパティが実装されていないとも言えるのですが(^^;



2073 Re^2: 文字列の行数に応じて縦スクロールバーをオンオフする コメント数:  0件
  本田勝彦  | 2002/02/23 (土) 21:36
> 何か拡張はされていますか?

推測ですが、スクロールバーのオン・オフに対応して WrapByte を変更する処理を行っている場合は、Undo データがクリアされます。
縦スクロールバーの幅を考慮して WrapByte を設定するようにしてください。




2072 他にフォーカスが移った時の選択範囲 コメント数:  2件
  さえぐさかつゆき  | 2002/02/23 (土) 10:56
たびたびお世話になります。先日はヒントありがとうございました。
(まだ格闘中ですけども)
他のコントロールにフォーカスが移っても、選択範囲を
そのまま選択表示させる方法はありますでしょうか?

よろしくおねがいします。



2071 Re: 文字列の行数に応じて縦スクロールバーをオンオフする コメント数:  1件
  本田勝彦  | 2002/02/22 (金) 22:48
>  Q&Aにある以下のコードを書くと文字列をすべて選択して削除した場合など Undo が効かなくなります。より正確にはスクロールバーが表示されるほどのテキストデータがあるとき、それが表示されないまでに削除すると Undo バッファがクリアされるようです。回避する方法があるでしょうか?

何か拡張はされていますか?又は、ScrollBars プロパティの変更の他に何かコーディングされていますか?
素の TEditor でテストして見ましたが、ご指摘の現象を再現出来ませんでした。



2070 文字列の行数に応じて縦スクロールバーをオンオフする コメント数:  2件
  editor Fan   | 2002/02/22 (金) 05:57
 Q&Aにある以下のコードを書くと文字列をすべて選択して削除した場合など Undo が効かなくなります。より正確にはスクロールバーが表示されるほどのテキストデータがあるとき、それが表示されないまでに削除すると Undo バッファがクリアされるようです。回避する方法があるでしょうか?

> 文字列の行数に応じて縦スクロールバーをオンオフする
> OnChange イベントで以下のようにします。
>
> procedure TForm1Editor1Change(Sender: TObject);
> begin
>  if Editor1.ListCount > Editor1.RowCount then
>   Editor1.ScrollBars := ssVertical
>  else
>   Editor1.ScrollBars := ssNone;
> end;



2069 Re: どこが削除、挿入されたのか知るには? コメント数:  3件
  本田勝彦  | 2002/02/21 (木) 22:18
> 編集中にどこの文字が削除されたか、挿入されたかを
> 知りたいのですが、OnChangeイベントとかでは
> 上手く判別できなかったので質問させてもらいました。
> なにか良いほうほうは無いでしょうか。

TEditor では、行単位で文字列を更新しているので、SelStart レベルで検知するのは難しいと思います。詳しくは、最新版 HEditor.pas の2,018行目からのコメントをご覧下さい。そこに記述されているメソッド群でイベントを発生させることは(行単位ですが)可能だと思います。



2068 どこが削除、挿入されたのか知るには? コメント数:  4件
  さえぐさかつゆき  | 2002/02/21 (木) 12:09
編集中にどこの文字が削除されたか、挿入されたかを
知りたいのですが、OnChangeイベントとかでは
上手く判別できなかったので質問させてもらいました。
なにか良いほうほうは無いでしょうか。
SelStartの位置とかで分かるかと思ったんですが..
内部で文字バッファを編集するイベントとかを拾えたら
できるんでしょうか。いまいちよく分かりませんけど、
ソース上でのヒントなどありましたら、自己責任で手を
加えますので、よろしくお願いします。
(登録済みです)



2067 Re^3: TheStringItem を拡張して欲しいよぉ コメント数:  0件
  本田勝彦  | 2002/02/20 (水) 20:50
> そ,そうですか...でもやはり Data, Item1, Item2 を使うことには変わりないので,結局使える資源(BIT数)が限られているので厳しいですね。

ですので Item3, Item4 ... を追加したクラスをこしらえてね。



2066 Re: 選択範囲内文字列の置換 コメント数:  0件
  かとちん  | 2002/02/19 (火) 19:16
 http://homepage2.nifty.com/t-katochin
っていうか呼び出し側の
工夫次第でなんとかなりますね。
お騒がせしました。



2065 Re^2: TheStringItem を拡張して欲しいよぉ コメント数:  1件
  かとちん  | 2002/02/19 (火) 18:08
 http://homepage2.nifty.com/t-katochin
> > やはり TRowAttribute に含めるのが一番スマートなんですよね。
> > 近い将来にでも,ぜひ御一考を。
>
> heRaStrings.pas が将来更新されることは、HEditor.pas 内でソレをいぢる部分も含めてもう無いと思います。
>
> なので、そういうクラスを書いて、TRowAttributeStringList を書き換えて
> しまって下さい。
そ,そうですか...でもやはり Data, Item1, Item2 を使うことには変わりないので,結局使える資源(BIT数)が限られているので厳しいですね。本田さんのおっしゃる
通り動的メモリの獲得はなるべく避けたいので。
例えばですねぇ。構造体の Item2 ですがこれを Item2[0..0] の定義にして,
このユーザエリアの部分の配列数をコンストラクタの引数にするとかってーのは,
どうでしょうか。それによって構造体+配列数分を,ガップリ確保して各レコードは
構造体の先頭アドレスへのポインタで管理するというようになると思います。
それなら TRowAttributeStringList に書き換わるというか継承して
残る部分を自由に使える別クラスを立てる気にもなるのですが。



2064 選択範囲内文字列の置換 コメント数:  1件
  かとちん  | 2002/02/19 (火) 17:56
 http://homepage2.nifty.com/t-katochin
...に,HTSearch は対応してないのですね。
対応予定はありませんか。(^^;



2063 Re^5: いくつか質問です。 コメント数:  0件
  本田勝彦  | 2002/02/17 (日) 23:29
> 期待してます。今ちょうどキーカスタマイズの部分を作っているもの
> で。いつ頃完成する予定でしょうか。

すいませんね。まだ未定です。(大きい汗・・・)



2062 Re^4: いくつか質問です。 コメント数:  1件
  DR-X   | 2002/02/17 (日) 13:16
>> あれ、そうでしたか。試してはいなかったんですがver 1.00系で作ら
>> れたいくつかのエディタではワード単位で動作してるんですけどね。

>そういう拡張を作者の方が行っているのではないかと思います。

うーん、ホントかなぁと思ってVer1.69をダウンロードして試してみま
した。やはりコメントの中でもワード単位で動作しているようです。

>キー入力とコマンド実行システムをこしらえて行く過程で取り入れて
>行きたいと思います。

期待してます。今ちょうどキーカスタマイズの部分を作っているもの
で。いつ頃完成する予定でしょうか。




2061 Re^3: いくつか質問です。 コメント数:  2件
  本田勝彦  | 2002/02/17 (日) 11:16
> あれ、そうでしたか。試してはいなかったんですがver 1.00系で作ら
> れたいくつかのエディタではワード単位で動作してるんですけどね。

そういう拡張を作者の方が行っているのではないかと思います。

> 要望になりますが、これはできれば、ワード単位で動作してほしいで
> す。今の仕様だと例えばコメントの途中でCTRL+→を押してしまうと最
> 後まで飛んでしまい、戻ろうとCTRL+←を押すと今度は行頭まで飛んで
> しまうという結果になってしまいます。この動作がうれしい人はあまり
> いないのではないでしょうか。

キー入力とコマンド実行システムをこしらえて行く過程で取り入れて行きたいと思います。



2060 Re^2: いくつか質問です。 コメント数:  3件
  DR-X   | 2002/02/17 (日) 10:02

> ver 1.00 を見てみましたが、現在のパーサーに仕切らせているので、
> そういう仕様だったと思います。

あれ、そうでしたか。試してはいなかったんですがver 1.00系で作ら
れたいくつかのエディタではワード単位で動作してるんですけどね。

要望になりますが、これはできれば、ワード単位で動作してほしいで
す。今の仕様だと例えばコメントの途中でCTRL+→を押してしまうと最
後まで飛んでしまい、戻ろうとCTRL+←を押すと今度は行頭まで飛んで
しまうという結果になってしまいます。この動作がうれしい人はあまり
いないのではないでしょうか。



2059 Re: いくつか質問です。 コメント数:  4件
  本田勝彦  | 2002/02/16 (土) 23:56
> 1.TEditorでCTRL+→などを押したとときの動作なんですが、
> ワード単位ではなくトークン単位で動作するのは仕様でしょうか。

ver 1.00 を見てみましたが、現在のパーサーに仕切らせているので、
そういう仕様だったと思います。

> 2.TKeyMacroでAltキーが記録されないのは仕様でしょうか。
> Alt+F1などを押しても記録されていないようです。

ここは Forms.pas の KeysToShiftState を参考にしたのですが、その下にある KeyDataToShiftState のやり方が本当かもしれません。チョット調べて見ます。



2058 いくつか質問です。 コメント数:  5件
  DR-X   | 2002/02/16 (土) 17:51
本田さん、こんにちは。DR-Xです。

いくつか質問させてください。

1.TEditorでCTRL+→などを押したとときの動作なんですが、
ワード単位ではなくトークン単位で動作するのは仕様でしょうか。
たとえばコメントなどで動作させると最後まで飛んでしまいます。
昔はこうじゃなかった気がするのですが。

2.TKeyMacroでAltキーが記録されないのは仕様でしょうか。
Alt+F1などを押しても記録されていないようです。

以上です。ご確認お願いします。



2057 Re: TheStringItem を拡張して欲しいよぉ コメント数:  0件
  本田勝彦  | 2002/02/16 (土) 10:46
書き換えてね。と書きましたが、実際にやって見るとおわかり頂けると思いますが、TStrings の Objects にブツを生成してあてがう処理は、かなりのパフォーマンス低下を招きます。ファイルの読み込み処理が2桁くらい遅くなります。必要に応じて生成してあてがう方法もありかもしれませんが。

Create とか New というのは遅い奴です。



2056 Re: TheStringItem を拡張して欲しいよぉ コメント数:  2件
  本田勝彦  | 2002/02/16 (土) 01:22
> ElementIndex はネストできないため,ElementIndex が変わる前の
> ブロックを認識できません。

そうですね。ここは TPerlFountain の時にかなり悩んだ部分です。

> やはり TRowAttribute に含めるのが一番スマートなんですよね。
> 近い将来にでも,ぜひ御一考を。

heRaStrings.pas が将来更新されることは、HEditor.pas 内でソレをいぢる部分も含めてもう無いと思います。

なので、そういうクラスを書いて、TRowAttributeStringList を書き換えて
しまって下さい。



2055 TheStringItem を拡張して欲しいよぉ コメント数:  4件
  かとちん  | 2002/02/15 (金) 23:56
 http://homepage2.nifty.com/t-katochin
ElementIndex の限界,その他もろもろにぶつかってます。
ElementIndex はネストできないため,ElementIndex が変わる前の
ブロックを認識できません。決められた戻りパターン分,ElementIndexの
要素を準備するか...とか,なんとかできないか,いろいろ考えたのですが,
やはり255までという限界もあるので,別の情報へのインデックスにする
こともままならず(255行が限界になっちゃいますものね。。。),
クラスを辿っていきましたが,「おっ!これは使える!」と一瞬思った
Items, Items2, Datas はすでに TheRaStrings のためのものになっているし。
...で,真っ白な灰になってしまいました。
他にも,IEのXML表示や,.NET のエディタのようなブロックの「折りたたみ」
なども実現したいのです。そういう諸々の事情から,
「UserData: TObject or Pointer」 のようなものを,TheStringItem に
含めた上で,そのアクセスメソッドを virtual で用意できませんかねぇ。
外部で情報を持とうにも,行インデックスは編集中にころころ変わるので
やはり TRowAttribute に含めるのが一番スマートなんですよね。
近い将来にでも,ぜひ御一考を。



2054 Re: FindNextWordStart だけじゃなく コメント数:  0件
  かとちん  | 2002/02/15 (金) 20:30
 http://homepage2.nifty.com/t-katochin
> FindNextTokenStart が欲し〜。
って,いうか簡単に作れました。
元の FindNextWordStartで使っている変数が
全てProtectモノだったので,
派生クラスにコピってパーサーだけ変えれば
うまく動きました。よかった。よかった。



2053 FindNextWordStart だけじゃなく コメント数:  1件
  かとちん  | 2002/02/15 (金) 20:26
 http://homepage2.nifty.com/t-katochin
FindNextTokenStart が欲し〜。



2052 Re^2: 全ての行のアトリビュートを予め取得済みにするには? コメント数:  0件
  かとちん  | 2002/02/15 (金) 14:12
 http://homepage2.nifty.com/t-katochin
DR-Xさん,こんにちわ。

> SpeedプロパティのInitBracketsFullをTrueにすればよいのでは?
情報ありがとうございます。

でも実は問題の原因が違いました。
↑方向に,トークンを取り出していきたいのですが,画面に納まっていないと
マイナス方向のトークン取得ができないようで,しかし,↓方向には
トークン解析がちゃんとできるという,たしか以前にも悩んでた同じことを
アップしてしまいました。
↑方向のトークンを取るために TokenBracketFromPos や TokenStringBracketFromPos を使っていましたが,
これが動作しない原因を,TEditorがまだ情報を取得済みでないと勘違いして
しまいました。Posがマイナスになるから動作しないだけでした。

違う方法を考えます。ありがとうございました。



2051 Re: 全ての行のアトリビュートを予め取得済みにするには? コメント数:  1件
  DR-X   | 2002/02/13 (水) 16:22
かとちんさん、こんにちは。

> TEditorは,パーサを必要に応じて(画面に表示された分だけ)使うようですが
> ファイルを読み込んだ時に,全ての行の ListData を取得済みにしておく最良の
> 方法ってありませんか?

SpeedプロパティのInitBracketsFullをTrueにすればよいのでは?