~katsuhiko メッセージボード

back 1701-1750

1751-1800

1801-1850


1800 Re^2: 同じトークンだよーと知る方法 コメント数:  2件
  かとちん  | 2001/11/08 (木) 01:42
 http://homepage2.nifty.com/t-katochin
本田さん、レスありがとうございます。

> トークンが占有する領域を Row, Col ベースで比較するしか方法としては考えられないのですが、折り返しにも対応しようとすると、かなり面倒な処理が必要だと思います。

ですよね〜。でもなんとかなりました。
結局、派生(したくなかったけど)TEditorを作り、
PosTokenString を参考にして、PosTokenStringEx
なる同様の関数を作り、引数に, var LineIndex, ColIndex: Integer
を追加して、LineIndex には Lines上の行を、ColIndex には、
Parser.SourcePos を返すようにしました。
マウス座標が異なっても、帰ってきた ColIndex と LineIndex が
他の座標での PosTokenStringEx 呼び出し結果と一致したら、同じ
トークンを指しているという風に。

> FSelStr: TSelectedPosition を更新している InitSelection, UpdateSelection あたりが参考になりませんでしょうか?

あいや、参考にはしたのですが、キャレットの更新系はしたくなかった
ので、やっぱり PosTokenString が参考になりました。



1799 Re^5: FindNextWordStart について コメント数:  1件
  かとちん  | 2001/11/08 (木) 01:30
 http://homepage2.nifty.com/t-katochin
それと、

> ご指摘の通り Word なのでそういう仕様です

が本当で、Fountain にとらわれない「Word」単位の移動
を狙ったものであるとしたら、PosTokenString メソッドと同様に
FindNextWordToken の中でも、ActiveFountain ではなく
TTokenParser を使うことになるのではないでしょうか。

以上、よろしくお願いします。



1798 Re^4: FindNextWordStart について コメント数:  2件
  かとちん  | 2001/11/08 (木) 01:23
 http://homepage2.nifty.com/t-katochin
問題はワードラップで、ソフト改行された2行目移行で
問題がおきるのです。[Ctrl]+[←]/[→]をしても Fountain に
のっとった動作をしなくなってしまうのです。
要は、トークンの途中でソフト改行された場合に、描画上は ListInfoに
従っているけど、FindNextWordStart だけが従っていないため、前行の
情報を引きついでいない(ElementIndexなどね)ことから、トークン単位に移動しなくなります。
たとえば、サンプルの HTML で WordWrap=True WrapByte=26 WordBreak=False
で、試すと、
================================================
<table border="0" width="1
00%" cellpadding="4" cells
pacing="0">
================================================
のようになりますが、上記の2行めは、
00% で一語、" cellpadding=" で一語、4 が一語で、
" cells ... が続く文字列だと判断して、単語間の移動を
行ってしまうのです。

うまく伝わったでしょうか?



1797 Re^3: FindNextWordStart について コメント数:  3件
  かとちん  | 2001/11/08 (木) 01:18
 http://homepage2.nifty.com/t-katochin
本田さん、レスありがとうございます。

> > FindNext「Word」Start なんだから
> > FindNext「Token」Start じゃなくて
> > 当然という声も聞こえてきそうですが、
> > FountainParser を使っている以上、
> > Fountainのトークン単位の移動先行・列を
> > 返却するはずですよね?
>
> ご指摘の通り Word なのでそういう仕様です。
>
> PosTokenString メソッド protected ^^; のコメントを参照して下さい。
え! 違いますよ。
PosTokenString メソッドの仕様に、FindNextWordStart だけが
のっとっていないのです。Fountainをうまく使っていないバグだと
思うのですが。

> > を実装しました。さらに、コードの途中で、R と
> > いう内部変数が変化するので、その度に、Data を
> > 取り直すことで、今のところうまくいってます。
>
> // 行コメント
>
> などで、先頭から行末へ移動するようになると思いますが。
> #そうしたいのだ。ということであれば何も言うことはありません(^^;
ちょっち、違うのです。
つづきはこの下で。



1796 Re: 同じトークンだよーと知る方法 コメント数:  3件
  本田勝彦  | 2001/11/08 (木) 00:12
> ある位置のトークンが、別の位置のトークンと、
> 同じかを判断したいのですが、可能でしょうか。。

トークンが占有する領域を Row, Col ベースで比較するしか方法としては考えられないのですが、折り返しにも対応しようとすると、かなり面倒な処理が必要だと思います。

FSelStr: TSelectedPosition を更新している InitSelection, UpdateSelection あたりが参考になりませんでしょうか?



1795 Re^3: マウスホイールは効く?、効かない? コメント数:  2件
  本田勝彦  | 2001/11/08 (木) 00:02
> もっと、複雑な動きをしてますよー。

それは知りませんでした。
#だから各アプリで実装してね。

> ぼそっ。
> 開発者向けに TEditor の protected メソッド のヘルプが欲しいなぁ。。。
> な〜んて、無茶を言ってみたりして。いやあ一所懸命追っているんですが、
> ワードラップの制御は本当に複雑ですねぇ。やっぱり凄いわ。

わはは。読むのぢゃ。

ワードラップは一番ベタな部分ですが、仕組みは簡単ですよ。該当行の1行前から、その行の終端までの文字列を取得して、折り返し処理を行って、該当部分を入れ替えてるだけです。



1794 Re^2: FindNextWordStart について コメント数:  4件
  本田勝彦  | 2001/11/07 (水) 23:53
> FindNext「Word」Start なんだから
> FindNext「Token」Start じゃなくて
> 当然という声も聞こえてきそうですが、
> FountainParser を使っている以上、
> Fountainのトークン単位の移動先行・列を
> 返却するはずですよね?

ご指摘の通り Word なのでそういう仕様です。

PosTokenString メソッド protected ^^; のコメントを参照して下さい。

> を実装しました。さらに、コードの途中で、R と
> いう内部変数が変化するので、その度に、Data を
> 取り直すことで、今のところうまくいってます。

// 行コメント

などで、先頭から行末へ移動するようになると思いますが。
#そうしたいのだ。ということであれば何も言うことはありません(^^;



1793 同じトークンだよーと知る方法 コメント数:  4件
  かとちん  | 2001/11/07 (水) 22:06
 http://homepage2.nifty.com/t-katochin
まだまだ調査不足だと思うのですが、もし簡単な方法が
あれば教えてください。

ある位置のトークンが、別の位置のトークンと、
同じかを判断したいのですが、可能でしょうか。。
文章だと意味がわかりにくいのですが、

たとえば、URLを例にしたとして

http://hogehoge.co.jp/hugehuge
↑            ↑
この位置  と   この位置

...は、当然、Col も違えば、マウス座標も違います。
でも実際には同じ場所のトークンを指しています。
TokenBracketFromPos などを使っているのですが、
文字列と種別だけでは、もちろん判断材料としては
不足していて、全く同じ単語が別の場所にあればアウトです。
さらに、ワードラップしていて別行になっていても、同じ
トークンかどうかを判断したいのです。

簡単な方法はありますでしょうか?



1792 Re^2: マウスホイールは効く?、効かない? コメント数:  3件
  かとちん  | 2001/11/07 (水) 21:22
 http://homepage2.nifty.com/t-katochin
> 例えば、このメッセージを書いている IE では本体がスクロールして、このエディタ部分はスクロールしません。

もっと、複雑な動きをしてますよー。
エディタがスクロール不要の場合だけ、IE本体がスクロールするようです。
エディタもスクロールして、先頭や末尾に達したら、今度はIE本体が
スクロールしてますね。うーん凝ってる。

-------------------------------------
ぼそっ。
開発者向けに TEditor の protected メソッド のヘルプが欲しいなぁ。。。
な〜んて、無茶を言ってみたりして。いやあ一所懸命追っているんですが、
ワードラップの制御は本当に複雑ですねぇ。やっぱり凄いわ。



1791 Re: FindNextWordStart について コメント数:  5件
  かとちん  | 2001/11/07 (水) 21:05
 http://homepage2.nifty.com/t-katochin
えーと、分かりにくいので自己レスです。

FindNext「Word」Start なんだから
FindNext「Token」Start じゃなくて
当然という声も聞こえてきそうですが、
FountainParser を使っている以上、
Fountainのトークン単位の移動先行・列を
返却するはずですよね?

-------------
対応してみました。

FillChar(Data, SizeOf(Data), 0);
Data.BracketIndex := InvalidBracketIndex; // -2

を削除して代わりに

if ListRows(R) = raEof then Exit;
Data := ListData[R];

を実装しました。さらに、コードの途中で、R と
いう内部変数が変化するので、その度に、Data を
取り直すことで、今のところうまくいってます。





1790 FindNextWordStart について コメント数:  6件
  かとちん  | 2001/11/07 (水) 19:10
 http://homepage2.nifty.com/t-katochin
えーと折り返しなどで、[Ctrl]+[→]/[←] で、
トークン単位の移動が行われますが、その実体である
FindNextWordStart が、折り返し行の続きなどで、
うまく動作したりしなかったりするということが分かりました。
実は「対応する括弧にジャンプ」という機能を追加しようとし
てそのために派生クラス内で FindNextWordStart を使って
いるのですが、これがきちんとトークン単位に移動しないと
困るのです。

調査したところ、FindNextWordStart 内の
Data: TRowAttributeData に対して、ListData[Index] を
代入していないことが原因と考えられます。

どう対応しようか迷っているのですが、
FindNextWordStart で ListDataを使わない理由(干渉問題
など)があるのでしたら教えてください。



1789 Re: マウスホイールは効く?、効かない? コメント数:  4件
  本田勝彦  | 2001/11/07 (水) 00:20
> によると、「対応していない」とあるけれど、効くこともあるみたいだ。謎・・。どうなっているんでしょうね?。

最新版では、
property OnMouseWheel;
property OnMouseWheelDown;
property OnMouseWheelUp;
が使えますのでイベントハンドラを書けば使えます。

勝手に動くのは、なしてでしょうね? Apolo がスクロールメッセージを投げているのかもしれません。

ぐりぐりで何処をスクロールするさせるかというのは、アプリケーションが管理すべき部分だと考えていますので、現在のような仕様になっています。
例えば、このメッセージを書いている IE では本体がスクロールして、このエディタ部分はスクロールしません。



1788 Re^5: 11/03Diaryを読んで コメント数:  2件
  本田勝彦  | 2001/11/07 (水) 00:12
> > 廃だなぁ(^^;
>
>  完全に。

私も今 MIDI にハマリそうで自分が恐い状態(^^;
ローランドが PC-8801 用のシーケンスソフトを PC-9801 用にバージョンアップするぞするぞといいながら出なかった頃ハマっていました。YAMAHA DX7 や TEAC の TASCAM 4 トラックがいまだに実家の納戸に眠っています。

隔世の感がありますね<MIDI

>  お体に気をつけて、高速?ネットをお楽しみ下さい。
>  ストリーム映像ばかり観ないように(^^ゞ

お勧めストリームは?(笑)



1787 マウスホイールは効く?、効かない? コメント数:  5件
  たけ(tk)   | 2001/11/06 (火) 17:34
今、Windows XP Home で Apeed を試しているのですが、

Delphi 6.0 でコンパイルした Apollo では HEditor でホイールが効かないようです。

しかし、同様の条件(Delphi 6.0)でコンパイルしたはずの Apollo.exe 自体ではホイールが効いています(TMemo のはず)。ネットスケープ4.06なんていう古いアプリでも XP Home でホイールが有効です。

いままで、Delphi 5.0 の Apollo を Windows2000 で動かしていたのですが、そこでは HEditor でホイールが平然と機能していました。

http://homepage3.nifty.com/~katsuhiko/heditqa.html#ans15

によると、「対応していない」とあるけれど、効くこともあるみたいだ。謎・・。どうなっているんでしょうね?。




1786 Re^4: 11/03Diaryを読んで コメント数:  3件
  清明  | 2001/11/05 (月) 19:00
ども。ご無沙汰です。

> 1.5だす。や〜っと来たんだから。@nifty などのADSL屋さんでは、まだ岩見沢市は無視されてます。

 私のところも1.5Mで、アナログからの移行なので、めちゃ早く感じられますね。
 開通したら
 http://webclub.kcom.ne.jp/tm/ogata/adsl/
 のあたりで速度を計測して憂うのもよいでしょう。
 (テレホの後遺症で午後11時に繋げないように)

> 廃だなぁ(^^;

 完全に。

> ISDNは月々の基本使用料が高い分をフレッツISDNの値下げ分が吸収しきれていないところが難ですね。今はテレホ代金が3,600円なのでその範囲に収まると嫁さんも納得するのですが。40歳を過ぎて、深夜のネットが体に良くないと思い始めているようです<嫁さん。

 お体に気をつけて、高速?ネットをお楽しみ下さい。
 ストリーム映像ばかり観ないように(^^ゞ



1785 Re^4: 11/03Diaryを読んで コメント数:  0件
  清明  | 2001/11/05 (月) 18:54
ども〜

> 私もAirH"のつなぎ放題です(^^)。
> Win98だとIPパケットの設定でだいぶ体感速度が違いました。設定どうですか?
> (Win2Kだと関係ないみたいです)。
> 最近になってようやくつなぎ放題って感じになってきました。それまではいつ繋がるんだって感じで悲しかったけど。はやく128Kパケットにならないかなぁ。

 お仲間〜。
 当方Win2000なため、早いのかどうかわかりませんね、
 アナログよりはちと遅いかなって感じでしょうか。

 以前はPinComp@ctだったんですが、家でも職場でもまったく繋がりません。
 FORMAはじめたDocomoにしてみればもうPHSは強化していかないんでしょうね。



1784 Re^7: キャレット位置の「文字」を返すメソッドはありますか? コメント数:  0件
  Km   | 2001/11/05 (月) 00:31
> > >  * これらも、本体にあっても良さそうなメソッドだな・・。
> >
> > Km さんの TEditorEx を使って下さい。
>
>  使ってます。 ^^;

どうもです。ただし、単語検索はTEditorとは仕様が違うので注意してください。
両方のアルゴリズムを使わなければ良いだけですけどね。

>  Km さーん、CharKind を private から出していただけませんか?。

これはそのまま外だしするより皮をかぶせた方がよさそうな気もしてます。
内部でconst値を切ってそれを使っているので、はたしてそのまま返して
良いものか悩みどころでして、どうしたらよいのかな。

#久々にソースを見たらすっかり忘れてました(^^;。



1783 Re^3: 11/03Diaryを読んで コメント数:  1件
  Km   | 2001/11/05 (月) 00:06
> ちなみに私のところはe-Accessの1.5Mです、モバイルはAirH"の32Kパケットつなぎほうだい。
> オンラインゲームにはまってます(PSO,クロスゲート、UO、であぶろ2)

私もAirH"のつなぎ放題です(^^)。
Win98だとIPパケットの設定でだいぶ体感速度が違いました。設定どうですか?
(Win2Kだと関係ないみたいです)。
最近になってようやくつなぎ放題って感じになってきました。それまではいつ繋がるんだって感じで悲しかったけど。はやく128Kパケットにならないかなぁ。



1782 Re^6: キャレット位置の「文字」を返すメソッドはありますか? コメント数:  1件
  たけ(tk)   | 2001/11/04 (日) 23:55
> >  * これらも、本体にあっても良さそうなメソッドだな・・。
>
> Km さんの TEditorEx を使って下さい。

 使ってます。 ^^;

−−

 Km さーん、CharKind を private から出していただけませんか?。




1781 Re^5: キャレット位置の「文字」を返すメソッドはありますか? コメント数:  2件
  本田勝彦  | 2001/11/04 (日) 23:37
>  * これらも、本体にあっても良さそうなメソッドだな・・。

Km さんの TEditorEx を使って下さい。




1780 Re^3: 11/03Diaryを読んで コメント数:  4件
  本田勝彦  | 2001/11/04 (日) 23:35
> ADSL導入おめでとうございます。8Mの方ですか?

1.5だす。や〜っと来たんだから。@nifty などのADSL屋さんでは、まだ岩見沢市は無視されてます。

>  1.基地局から離れているために速度の保証が出来ない
>  (近くにNTTがあれば良いです)

これが一番可能性としては高いそうです。

>  2.周りにISDN回線が多く干渉する。

これもありかなぁ。

> ちなみに私のところはe-Accessの1.5Mです、モバイルはAirH"の32Kパケットつなぎほうだい。
> オンラインゲームにはまってます(PSO,クロスゲート、UO、であぶろ2)

廃だなぁ(^^;

ISDNは月々の基本使用料が高い分をフレッツISDNの値下げ分が吸収しきれていないところが難ですね。今はテレホ代金が3,600円なのでその範囲に収まると嫁さんも納得するのですが。40歳を過ぎて、深夜のネットが体に良くないと思い始めているようです<嫁さん。




1779 Re^4: キャレット位置の「文字」を返すメソッドはありますか? コメント数:  3件
  たけ(tk)   | 2001/11/04 (日) 23:16
> ちょっと発想変えて、一行文字列の位置を求めた方が簡単かもしれません。以下のような感じかな。動作確認はしてませんm(_ _)m
>
> ARow := Editor1.Row;
> ACol := Editor1.Col;
> Index := Editor1.ColToChar(ARow, ACol) + 1; // 1ベースにする
> S := Editor1.Lines.Strings[Editor1.RowToLines(ARow)];

 やっぱ、ちゃんと用意されていたんですね。

> //EditorExを使ってたら、S := EditorEx1.LineString(ARow);

 これって、HEditor の本体にあっても良さそうなメソッドですね。

 このアルゴリズムを使えば RowToLines も高速化できそうな予感・・。

 −−

 CharKind、IsWholeWord も僕の要望に近そうな予感。CharKind だけでなく、Char 自体を返してくれるものもあれば、感激しそうです。

 * これらも、本体にあっても良さそうなメソッドだな・・。



1778 Re^2: 11/03Diaryを読んで コメント数:  7件
  清明  | 2001/11/04 (日) 10:07
ADSL導入おめでとうございます。8Mの方ですか?

> > 1.なぜか、深夜しか繋がらない。
> > 2.おしい、エリア内まであと100メートル。
> > 3.しまった、回線が古いくて対応できない。
> >
> > どれでしょう(^^;

 1.基地局から離れているために速度の保証が出来ない
 (近くにNTTがあれば良いです)
 2.周りにISDN回線が多く干渉する。
 (8Mの方だと干渉しにくいような・・・)
 3.ホームホン?、ガス漏れの有線通知機能?、ホームセキュリーティーの回線がある

 とかでしょうか。

ちなみに私のところはe-Accessの1.5Mです、モバイルはAirH"の32Kパケットつなぎほうだい。
オンラインゲームにはまってます(PSO,クロスゲート、UO、であぶろ2)



1777 Re: 11/03Diaryを読んで コメント数:  8件
  本田勝彦  | 2001/11/03 (土) 23:19
> 常時接続環境おめでとうございます。V(^^)

どもども。11月29日の開通(導通?)てすと次第だそうです。
「ご利用頂けるという前提でお話させて頂いておりますが、モデムがエラーを検知する可能性もあります」ということでした。繋がらなくても工事費はかかるようで・・・

> 1.なぜか、深夜しか繋がらない。
> 2.おしい、エリア内まであと100メートル。
> 3.しまった、回線が古いくて対応できない。
>
> どれでしょう(^^;

だめだったらフレッツISDNにするんだモン。
またオークションで中古人生だぁ。



1776 Re^4: キャレット位置の「文字」を返すメソッドはありますか? コメント数:  0件
  本田勝彦  | 2001/11/03 (土) 23:15
ColToChar がありましたか。って私が書いたんでしたね(^^;



1775 11/03Diaryを読んで コメント数:  9件
  Km   | 2001/11/03 (土) 14:39
常時接続環境おめでとうございます。V(^^)

>回線の状態によっては使えない場合もあるとのこと。

気になりますね。
1.なぜか、深夜しか繋がらない。
2.おしい、エリア内まであと100メートル。
3.しまった、回線が古いくて対応できない。

どれでしょう(^^;



1774 Re^3: キャレット位置の「文字」を返すメソッドはありますか? コメント数:  5件
  Km   | 2001/11/03 (土) 14:21
> col から「ListString(row) で取り出した文字列」で使える index にするには、なにか簡単な方法はありますか?。

ちょっと発想変えて、一行文字列の位置を求めた方が簡単かもしれません。以下のような感じかな。動作確認はしてませんm(_ _)m

ARow := Editor1.Row;
ACol := Editor1.Col;
Index := Editor1.ColToChar(ARow, ACol) + 1; // 1ベースにする
S := Editor1.Lines.Strings[Editor1.RowToLines(ARow)];
//EditorExを使ってたら、S := EditorEx1.LineString(ARow);

これで文字列SのIndex桁目の文字を取得できると思います。
ただし、1文字取得するには全角/半角を判断する必要があります。



1773 Re^3: キャレット位置の「文字」を返すメソッドはありますか? コメント数:  0件
  本田勝彦  | 2001/11/03 (土) 00:01
> ふむふむ。半角・全角の区別はこれでいいとして、そこに入れる Index が分からない。
>
> ListString(row) で取り出した文字列で col をインデックスにして取り出した場合、前の方にタブコードがあるとずれてしまいますよね?。
>
> col から「ListString(row) で取り出した文字列」で使える index にするには、なにか簡単な方法はありますか?。

無いですねぇ。GetSelStart でやっているような処理が必要になると思います。
PosTokenStringFromCaret は使えませんか?



1772 Re^2: キャレット位置の「文字」を返すメソッドはありますか? コメント数:  7件
  たけ(tk)   | 2001/11/02 (金) 17:35
> PosTokenString の返値の頭の1文字が使えませんでしょうかね。
>
> > lines、ListString、row、col などを駆使すればいいのでしょうけれど、タブコードが入っている場合や、全角、半角の識別など、複雑すぎてよくわかりません。
>
> heUtils.pas にある AnsiCopy で1文字を取り出せると思いますよ。
> 試して見て下さい。

ふむふむ。半角・全角の区別はこれでいいとして、そこに入れる Index が分からない。

ListString(row) で取り出した文字列で col をインデックスにして取り出した場合、前の方にタブコードがあるとずれてしまいますよね?。

col から「ListString(row) で取り出した文字列」で使える index にするには、なにか簡単な方法はありますか?。




1771 Re: キャレット位置の「文字」を返すメソッドはありますか? コメント数:  8件
  本田勝彦  | 2001/11/02 (金) 00:07
PosTokenString の返値の頭の1文字が使えませんでしょうかね。

> lines、ListString、row、col などを駆使すればいいのでしょうけれど、タブコードが入っている場合や、全角、半角の識別など、複雑すぎてよくわかりません。

heUtils.pas にある AnsiCopy で1文字を取り出せると思いますよ。
試して見て下さい。



1770 Re: 振り込んだんですが・・ コメント数:  0件
  本田勝彦  | 2001/11/02 (金) 00:01
> 後ればせながら、シェアウエア代金を振り込みました。

あらぁ、ありがとうございます。

> で、Apeed のユーザに呼びかけるとしたら、どんな風な表現になるんでしょう?。
>
>  (1)Apeed は HEditor を利用している。
>  (2)HEditor はシェアウエアだが、
>  (3)Apeed のユーザは(マクロ開発をするときでも)送金は不要。
>  (4)しかし、HEditor の発展に寄与したい人は送金しよう。
>  (5)送金先は、HEditor のヘルプを出す。
>
> こんなので、いいでしょうか?。

ありがたいなぁ。お任せ致しますので、よろしくお願い致します。

レジストが無くなると、「そろそろ TEditor もその役目を終えたかな」という
気持ちになってしまったりもするんですよね。逆もあるのですが(^^;



1769 Re: キャレットを移動するメソッドはありますか?。 コメント数:  0件
  本田勝彦  | 2001/11/01 (木) 23:57
> プログラムでキャレットを移動するメソッドが捜しきらないのですが、ありますでしょうか?。
>
> 左右に一文字移動、単語ごとに移動、(論理行・表示行)の行末・行頭への移動とかいったメソッドです。

Row, Col しかないですね。あとは、CTRL + ←→ を sendmessage するか。

今考え中の「キー入力に対応するコマンドが実行される」というのが
出来た時は TEditor にそういうコマンドを実装出来ると思いますので
お待ち下さい。

長い目でおねげぇしますだぁ。




1768 Re^8: THTMLFountain のコーテーション コメント数:  0件
  本田勝彦  | 2001/11/01 (木) 23:51
> 今回の対応で大丈夫そうです(^^)

どうもです。今度リリースする時は、こちらのパターンにしたいと思います。



1767 キャレット位置の「文字」を返すメソッドはありますか? コメント数:  9件
  たけ(tk)   | 2001/11/01 (木) 20:45
もうひとつ質問です。

キャレット位置の「文字」を返すメソッドはありますでしょうか?。

半角もしくは全角の一文字の文字列をかえすメソッドが欲しい(作りたい)です。

現状では、次のようにしているのですが、どう見ても、効率が悪いし、スマートでもありません。

start = e.sel_start
##move_right
e.move_right
len = e.sel_start - start
e.sel_start = start
e.sel_length = len
ret = e.sel_text
e.sel_length = 0
return ret

lines、ListString、row、col などを駆使すればいいのでしょうけれど、タブコードが入っている場合や、全角、半角の識別など、複雑すぎてよくわかりません。

簡単に「キャレット位置の文字を返すメソッド」を作るにはどういう手がいいでしょうか?。できれば、HEditor で用意してくれませんか?。

* すでにあったら、ごめんなさい。



1766 振り込んだんですが・・ コメント数:  1件
  たけ(tk)   | 2001/11/01 (木) 15:41
後ればせながら、シェアウエア代金を振り込みました。

僕の場合、デルファイで HEditor を使っているわけではなく、
A.Delphi で HEditor を使って開発しているユーザ。

HEditor コンポーネントを組み込んで開発された Apollo.exe のユーザなわけ。
B1.Apollo=Aで作成されたアプリ= のユーザ。

で、Apollo で Apeed というエディタを作っている。
B2.Apollo=Aで作成されたアプリ= で HEditor を使ったアプリを作るユーザ。

Apeed のユーザは HEditor の間接的なユーザとなる。
C1.Apeed=Bで作成されたアプリ=を使うだけのユーザ。

Apeed にはマクロ機能もあるので、ユーザが Apeed のマクロを開発する。
C2.Apeed=Bで作成されたアプリ=で HEditor を使ったアプリを作るユーザ。

と続く。

で、Apeed のユーザに呼びかけるとしたら、どんな風な表現になるんでしょう?。

 (1)Apeed は HEditor を利用している。
 (2)HEditor はシェアウエアだが、
 (3)Apeed のユーザは(マクロ開発をするときでも)送金は不要。
 (4)しかし、HEditor の発展に寄与したい人は送金しよう。
 (5)送金先は、HEditor のヘルプを出す。

こんなので、いいでしょうか?。



1765 キャレットを移動するメソッドはありますか?。 コメント数:  1件
  たけ(tk)   | 2001/11/01 (木) 13:52
プログラムでキャレットを移動するメソッドが捜しきらないのですが、ありますでしょうか?。

左右に一文字移動、単語ごとに移動、(論理行・表示行)の行末・行頭への移動とかいったメソッドです。

一文字移動の方はこんなのを作ってやりくりしていますが、(もうちょっとスマートな方法とか)、TEditor 組み込みのものがあればそれを使いたい。

def move_left n=1
old = editor.sel_start
editor.sel_start -= n
editor.sel_start -= n+1 if editor.sel_start == old
end

単語単位の移動は未解決。

(というか組み込みの Ctrl+[←][→]では
 (1)行の先頭に止まらない、
 (2)半角記号に止まらない、
など、多少不満があるので動作を変えたいが、実現的できていない)。



1764 Re^7: THTMLFountain のコーテーション コメント数:  1件
  パンタグラフ  | 2001/11/01 (木) 11:52
 http://homepage1.nifty.com/cosmic/
> > やっぱり、まずいケースがありました。
> > '80 というように、アポストロフィ付きの年号から始まる場合ですね。
>
> 開発日誌のページ http://compodev.at.infoseek.co.jp/ に THTMLFountain beta 2 を置きました。試して見て下さい。タグの中でだけ toSingleQuotation, toDoubleQuotation を取得しています。

返信が遅くなってすみません。
今回の対応で大丈夫そうです(^^)



1763 Re^5: Ver2.36Bataでバグ見つけました。 コメント数:  0件
  本田勝彦  | 2001/10/28 (日) 23:07
> Win2K + IE5.5で試しましたが、やはり問題なかったです。

お手数をお掛け致しました。

uses
 shellapi;

procedure TForm1.Button1Click(Sender: TObject);
var
 S: String;
begin
 S := '' + Editor.TokenStringFromCaret;
 ShellExecute(Handle, 'OPEN', PChar(S), '', '', SW_SHOW);
end;

試して見て下さい。>たろうさん。





1762 Re^4: Ver2.36Bataでバグ見つけました。 コメント数:  1件
  Km   | 2001/10/28 (日) 21:52
Win2K + IE5.5で試しましたが、やはり問題なかったです。



1761 Re^3: Ver2.36Bataでバグ見つけました。 コメント数:  2件
  本田勝彦  | 2001/10/28 (日) 17:14
> 私もダウンロードして確認してみました。Win98SE + IE5.5では問題ないです。
> 今Win2Kをインストールしているので、それが終わったらWin2K + IE5.5で試して
> みますね。

あら、すいませんね。実現部のコードは

S := '' + Editor.TokenStringFromCaret;
ShellExecute(Handle, 'OPEN', PChar(S), '', '', SW_SHOW);

となっているだけなので、S を 'hoge@nifty.ne.jp';
などとして、お手元の Delphi の Button1Click などで試すことが出来ます>たろうさん。

unicode 問題か?





1760 Re^2: Ver2.36Bataでバグ見つけました。 コメント数:  3件
  Km   | 2001/10/28 (日) 16:38
> > Ver2.36Bataでバグ見つけました。
> > デモのHTMLタグをクリックして、メールアドレスをダブルクリックすると
> > 無限ループになってIEがどんどん開いてしまいました。
> > 実行環境は
> > Win2K+IE5.5です

> ここで公開されている project1.exe をダウンロードして試して見ましたが、
> ご指摘の現象は起きませんでした。win98 ie5.0 です。

私もダウンロードして確認してみました。Win98SE + IE5.5では問題ないです。
今Win2Kをインストールしているので、それが終わったらWin2K + IE5.5で試して
みますね。



1759 Re: Ver2.36Bataでバグ見つけました。 コメント数:  4件
  本田勝彦  | 2001/10/28 (日) 14:47
> Ver2.36Bataでバグ見つけました。
> デモのHTMLタグをクリックして、メールアドレスをダブルクリックすると
> 無限ループになってIEがどんどん開いてしまいました。
> 実行環境は
> Win2K+IE5.5です

こういうのはバグと言わないので以後気を付けるように。

ここで公開されている project1.exe をダウンロードして試して見ましたが、
ご指摘の現象は起きませんでした。win98 ie5.0 です。

お使いのOSとIEが腐っているだけなのではないでしょうか?




1758 Ver2.36Bataでバグ見つけました。 コメント数:  5件
  たろう  | 2001/10/28 (日) 14:24
Ver2.36Bataでバグ見つけました。
デモのHTMLタグをクリックして、メールアドレスをダブルクリックすると
無限ループになってIEがどんどん開いてしまいました。
実行環境は
Win2K+IE5.5です



1757 Re^2: Undo、Redoの一時停止 コメント数:  0件
  sakazuki   | 2001/10/23 (火) 05:51
 http://homepage2.nifty.com/sakazuki/rde.html
> > Undo、Redoの機能を一時的に停止させる方法はありますか?
> > あれば教えてください。
>
> procedure TEditorScreenStrings.UpdateList で、ベタに埋め込まれているので、難しいと思います。
>
そうですか。わかりました。

> どんな時に停止させたいのでしょうか?

拙作で動的略語展開という入力補完機能を開発中です。あるキーを押すたびに入力候補を切り替える処理をするのですが、この切り替えによる変更を、SelTextで都度書き込んでいるため、現在だとすべてUndoバッファに入ってしまいます。これを一時的に止めれるなら止めたいなというのが、背景でした。
まだ、インターフェースをリスト形式にしようかとも迷っている最中で、SelTextで都度書き換える形にするかどうかも未定です。もともとUndo停止機能があるのであれば、使いたいなーという程度のものだったので、現在のままでもかまいません。
ありがとうございました。



1756 Re^3: Delphi6へのインストールがうまくいきません。 コメント数:  0件
  本田勝彦  | 2001/10/22 (月) 23:42
> お陰様で順調に動き始めました。
> しばらく検討させて下さい。
> 決定しましたならメールでご連絡いたします。

気長にじっくり弄り倒しまくって下さい。

designide の件は、以前もここで指摘されていたのですが、私がデフォのパッケージしか使わないので、あまり気にしていませんでした(^^;
次のバージョンのドキュメントには記述するようにしたいと思います。
ご質問に感謝です。




1755 Re^6: THTMLFountain のコーテーション コメント数:  2件
  本田勝彦  | 2001/10/22 (月) 23:37
> やっぱり、まずいケースがありました。
> '80 というように、アポストロフィ付きの年号から始まる場合ですね。
>
> 思うに、通常の文書の中では、'' や "" で括ることは
> プログラムソース以外はあまりないと思うので、タグの中で
> のみ、'' や "" が有効になればいいと思います。
> 通常の文書でコーテーションで括る場合は‘’や“”という
> くくり型にする方が正しいと思いますし。

開発日誌のページ http://compodev.at.infoseek.co.jp/ に THTMLFountain beta 2 を置きました。試して見て下さい。タグの中でだけ toSingleQuotation, toDoubleQuotation を取得しています。



1754 Re: Undo、Redoの一時停止 コメント数:  1件
  本田勝彦  | 2001/10/22 (月) 23:35
> Undo、Redoの機能を一時的に停止させる方法はありますか?
> あれば教えてください。

procedure TEditorScreenStrings.UpdateList で、ベタに埋め込まれているので、難しいと思います。

どんな時に停止させたいのでしょうか?



1753 Re^2: Delphi6へのインストールがうまくいきません。 コメント数:  1件
  MNagaoka   | 2001/10/22 (月) 16:07
お陰様で順調に動き始めました。
しばらく検討させて下さい。
決定しましたならメールでご連絡いたします。



1752 Re^5: THTMLFountain のコーテーション コメント数:  3件
  パンタグラフ  | 2001/10/22 (月) 10:08
 http://homepage1.nifty.com/cosmic/
> > > できれば THTMLFountain でデフォで対応きぼーん(^-^)
> > > > へいへい。開発日誌のページ http://compodev.at.infoseek.co.jp/ に置きましたので、お試し下さい。
>

やっぱり、まずいケースがありました。
'80 というように、アポストロフィ付きの年号から始まる場合ですね。

思うに、通常の文書の中では、'' や "" で括ることは
プログラムソース以外はあまりないと思うので、タグの中で
のみ、'' や "" が有効になればいいと思います。
通常の文書でコーテーションで括る場合は‘’や“”という
くくり型にする方が正しいと思いますし。

どうでしょうか?



1751 Undo、Redoの一時停止 コメント数:  2件
  sakazuki   | 2001/10/22 (月) 09:25
 http://homepage2.nifty.com/sakazuki/rde.html
こんにちは。sakazukiです。

Undo、Redoの機能を一時的に停止させる方法はありますか?
あれば教えてください。

よろしくお願いします。