~katsuhiko メッセージボード

back 2451-2500

2501-2550

2551-2600


2550 Re^14: カーソルが? コメント数:  1件
  にしの 2003/04/24 (木) 22:39
> D5にも UnRegisterIntegerConsts はあるのでしょうか?
> D4には無いです。

ヘルプをダウンロードしてみました。
UnRegisterIntegerConstsはヘルプに載っていません。RegisterIntegerConstsは載っていました。

http://www.tama.or.jp/~y.ohm/memo/del6vcltoc.shtml
ここの、「ルーチン一覧 - 追加分(490項目)」にあるので、D6から追加されたみたいです。



2549 Re^5: 過去ログのメールアドレス コメント数:  1件
  本田勝彦 2003/04/24 (木) 21:41
TKeyMacro の ver 1.2 以降では SaveToFile, SaveToStream が実装されてます。




2548 Re^13: カーソルが? コメント数:  2件
  本田勝彦 2003/04/24 (木) 21:38
IntConstList.Items.Count が増えるだけなので問題は無いように思いますが、
せっかく VCL に実装されたからには意味があるのかもしれませんね。
UnRegisterIntegerConsts 入れることにします。

D5にも UnRegisterIntegerConsts はあるのでしょうか?
D4には無いです。



2547 Re^4: 過去ログのメールアドレス コメント数:  2件
  パンタグラフ 2003/04/24 (木) 20:50
 http://homepage1.nifty.com/cosmic/
> おかげさんで、自作エディタにキーボードマクロを複数登録実行出来る
> 仕組みが組み込まれました(笑)。

キーボードマクロって、保存できるんでしょうか?
私のエディタではまだ実現できてないのですが。



2546 Re^2: はじめまして コメント数:  0件
  高田  | shigma427@hotmail.com 2003/04/24 (木) 16:00
> synedit は付属のサンプルしかいじったことが無かったりします。
> が、何よりもソースコードの読み易さと、その仕組みのおもしろさでは
> 郡を抜くコンポーネントだと思います。
>
> 是非挑戦して見て下さい。

早い返事を有難うございました。
エディタ作りに挑戦してみます。



2545 Re^12: カーソルが? コメント数:  3件
  にしの 2003/04/24 (木) 11:48
> 検証ありがとうございます。新バージョンをリリースしたいと思います。

リリース前に、やっぱり
UnregisterIntegerConsts(TypeInfo(TCursor), HIdentToInt, HIntToIdent);
をheUtilsのfinalizationに加えませんか?

パッケージをロード/アンロードし続けると、問題が発生しそうな気がして。
それと、ソースをごちゃごちゃさせないためにも、initializationの中のLoadCursorsの次の行に、
RegisterIntegerConsts(TypeInfo(TCursor), HIdentToInt, HIntToIdent);
としておけば、initialization,finalizationの中に登録/解除が入ることになるので見やすくなると思います。

細かいところですが・・・。



2544 Re: はじめまして コメント数:  1件
  本田勝彦 2003/04/24 (木) 10:12
synedit は付属のサンプルしかいじったことが無かったりします。
が、何よりもソースコードの読み易さと、その仕組みのおもしろさでは
郡を抜くコンポーネントだと思います。

是非挑戦して見て下さい。



2543 Re^11: カーソルが? コメント数:  4件
  本田勝彦 2003/04/24 (木) 10:07
検証ありがとうございます。新バージョンをリリースしたいと思います。



2542 Re^10: カーソルが? コメント数:  5件
  うらら 2003/04/24 (木) 09:33
> に RegisterIntegerConsts を実行する heutils.pas を置きました。
> HPropert.pas と合わせておためしください。

おめでとうございます。完治した様です。



2541 はじめまして コメント数:  2件
  高田  | shigma427@hotmail.com 2003/04/24 (木) 08:10
はじめまして、高田と申します。
本田さんならわかると思ったのですが、SynEditコンポーネントエディタを作るにあたって欠点や問題などはあるのですか?
エディタを作ろうと思ってるのですが、SynEditがあまり使われてないようなので気になりました。

返事待ってます
高田



2540 Re^3: 過去ログのメールアドレス コメント数:  3件
  本田勝彦 2003/04/24 (木) 01:30
過去ログのメールアドレスを総て削除しました。

おかげさんで、自作エディタにキーボードマクロを複数登録実行出来る
仕組みが組み込まれました(笑)。




2539 Re^9: カーソルが? コメント数:  6件
  本田勝彦 2003/04/23 (水) 20:48
http://compodev.at.infoseek.co.jp/arc/heutils.lzh

に RegisterIntegerConsts を実行する heutils.pas を置きました。
HPropert.pas と合わせておためしください。





2538 Re^2: 過去ログのメールアドレス コメント数:  4件
  パンタグラフ 2003/04/23 (水) 11:36
 http://homepage1.nifty.com/cosmic/
素早い対応ありがとうございます。

> > 「HTML 中ではメールアドレスの @ を実体参照で @ と書く」
>
> これも、いずれは有効な手段では無くなるような気がしますが。

ええ、そういうロボットもあるようで、
最近では JavaScript でメールアドレスを書き出したり、
メールアドレス表示のページには認証をかけるところもありますね。

> 悲しい時代ですね。私は3回以上来たドメインについては nifty で着信拒否
> 設定を行っています。

私もはじめはそうしていたのですが、もう100件分の設定が
一杯になってしまいました。ほとんどの無料メールのドメインから
届かなくなってます(^_^;



2537 Re^10: カーソルが? コメント数:  0件
  本田勝彦 2003/04/23 (水) 10:06
> 今回の問題が解決されても、アプリで保存した設定を読み込むと

IDE で保存したモノもですね。
要するにぜんぶぢゃ(^^;



2536 Re^9: カーソルが? コメント数:  1件
  本田勝彦 2003/04/23 (水) 10:00
検証ありがとうございます。

なるほど。やっぱり RegisterIntegerConsts は必須なのですね。
これだけで良さそうな気もしますが、今晩にでも試してみます。

> すでに保存されているものは、この部分を修正しないと(たぶん)だめです。

今回の問題が解決されても、アプリで保存した設定を読み込むと
望むカーソルにはならない場合があるので、再設定と再保存が
必要になるということですね。



2535 Re^8: カーソルが? コメント数:  9件
  にしの 2003/04/23 (水) 09:36
UnregisterIntegerConstsという関数もあるのですが、これを使うべきかどうかはわかりませんでした。

これで、IDEで登録したとき、今まで
Caret.Cursors.DragSelCopyCursor = 2
Caret.Cursors.LeftMarginCursor = 1
となっていたのが、
Caret.Cursors.DragSelCopyCursor = crDragSelCopy
Caret.Cursors.LeftMarginCursor = crRightArrow
となります。
すでに保存されているものは、この部分を修正しないと(たぶん)だめです。



2534 Re^8: カーソルが? コメント数:  0件
  にしの 2003/04/23 (水) 09:33
[heUtils.pas]
procedure LoadCursors;
の前に、

function HIdentToInt(const Ident: string; var Int: Longint): Boolean;
begin
if AnsiCompareText(RightArrowCursorIdent, Ident) = 0 then
begin
Int := crRightArrow;
Result := True;
end
else if AnsiCompareText(DragSelCopyCursorIdent, Ident) = 0 then
begin
Int := crDragSelCopy;
Result := True;
end
else
begin
Result := IdentToCursor(Ident, Int);
end;
end;

function HIntToIdent(Int: Longint; var Ident: string): Boolean;
begin
if Int = crRightArrow then
begin
Ident := RightArrowCursorIdent;
Result := True;
end
else if Int = crDragSelCopy then
begin
Ident := DragSelCopyCursorIdent;
Result := True;
end
else
begin
Result := CursorToIdent(Int, Ident);
end;
end;
の2つの関数を定義。

LoadCursorsの最後に、
RegisterIntegerConsts(TypeInfo(TCursor), HIdentToInt, HIntToIdent);
を追加。



2533 Re^7: カーソルが? コメント数:  11件
  にしの 2003/04/23 (水) 09:32
原因は、IDEでのcrRightArrow, crDragSelCopyの値と、実行時のcrRightArrow, crDragSelCopyの値が違うためです。
なぜ変わってしまうのかわからないのですが、TCursorに、数値としてでなく、文字列として登録されていれば、Streamから読み出したときにずれることがなくなります。

こちらの環境はDelphi7ですので、Delphi6でうまくいくかわかりませんが次のようにすれば直ると思います。

(長すぎるので次に回します)



2532 Re^6: カーソルが? コメント数:  12件
  うらら 2003/04/23 (水) 09:00
ご苦労様でした。が...

> http://compodev.at.infoseek.co.jp/arc/hpropert.lzh
>
> に HPropert.pas の対応最新版を置きました。お試しあれ〜

プロパティエディタ&FormViewEditorの両方で設定はしているのですが、
全く実体には反映されていないようです。
環境はDelphi6です。



2531 Re^5: カーソルが? コメント数:  13件
  本田勝彦 2003/04/23 (水) 01:08
> > しかし、あまりスマートな解決(回避)方法とは言えないので、TEditor本体の
> > 修正お願いしたいと思います。

http://compodev.at.infoseek.co.jp/arc/hpropert.lzh

に HPropert.pas の対応最新版を置きました。お試しあれ〜



2530 Re^2: 過去ログのメールアドレス コメント数:  0件
  本田勝彦 2003/04/22 (火) 23:35
迷惑メールが増え始めたのは、ネット通販や、オークションをよく利用するように
なった頃と一致するような気がします。



2529 Re: 過去ログのメールアドレス コメント数:  6件
  本田勝彦 2003/04/22 (火) 21:38
> 「HTML 中ではメールアドレスの @ を実体参照で @ と書く」

これも、いずれは有効な手段では無くなるような気がしますが。

> そこでお願いなのですが、本田さんのサイトの過去ログ(tripod の方)に
> 掲載されているメールアドレスも、上記のようなエスケープ処理を
> していただけないでしょうか。

過去、mailto: を外す処理は行いましたが、メールアドレス自体は残っていますね。
ロボットさん以外でここの過去ログからアドレスを検索してメールを出される方も
いらっしゃらないでしょうし、全員のメールアドレスを削除してしまいましょうかね?

悲しい時代ですね。私は3回以上来たドメインについては nifty で着信拒否設定を
行っています。

ウチに来るヤツを、ここでさらし者にすれば、迷惑メールを出す人同士が迷惑する状況を作り出すことも可能なのか・・・不毛だなぁ・・・



2528 Re^4: カーソルが? コメント数:  14件
  本田勝彦 2003/04/22 (火) 21:31
> しかし、あまりスマートな解決(回避)方法とは言えないので、TEditor本体の
> 修正お願いしたいと思います。


はーい。

って、今回の事件で初めて知りましたが、プロパティエディタにカーソルの絵が描画されるようになったのは D6 からですかね?D5 は買いそびれたんです。



2527 過去ログのメールアドレス コメント数:  7件
  パンタグラフ 2003/04/22 (火) 01:09
 http://homepage1.nifty.com/cosmic/
最近、迷惑メールが増加しているので、
メールアドレス収集ロボット対策に、
自サイトにはいろいろと手段を講じています。

簡単なものは、
「HTML 中ではメールアドレスの @ を実体参照で @ と書く」
というものですが、大半のアドレス収集ロボットは
これで防げるようです。

ただ、他人様のサイトにも私のメールアドレスが掲載されていますので、
そればかりはどうしようもありません。

そこでお願いなのですが、本田さんのサイトの過去ログ(tripod の方)に
掲載されているメールアドレスも、上記のようなエスケープ処理を
していただけないでしょうか。

お忙しいところ恐縮ですが、よろしくお願いします。



2526 Re^3: カーソルが? コメント数:  15件
  うらら 2003/04/21 (月) 09:54
> 解決しましたか?うららさん?

はい。
>heUtilsをusesに加えて、
にしのさんの助言により解決致しました。

しかし、あまりスマートな解決(回避)方法とは言えないので、TEditor本体の
修正お願いしたいと思います。



2525 Re^2: カーソルが? コメント数:  16件
  本田勝彦 2003/04/20 (日) 23:34
> どうやら、プロパティエディタのTCursor部分が、crRightArrowを描画できないのが原因っぽいです。

あ、そっちのプロパティエディタだったのですね。
いつの間にか crDefault に戻ってしまうといったことだったのかなぁと・・・

解決しましたか?うららさん?



2524 Re: カーソルが? コメント数:  17件
  にしの 2003/04/20 (日) 23:09
> 明示的にLeftBarのカーソルにcrRightArrowを代入するのはどうするのでしょうか?

heUtilsをusesに加えて、
Editor1.Caret.Cursors.LeftMarginCursor := crRightArrow;
としてやればできます。
# Delphi7で確認

どうやら、プロパティエディタのTCursor部分が、crRightArrowを描画できないのが原因っぽいです。



2523 Re: カーソルが? コメント数:  0件
  本田勝彦 2003/04/19 (土) 17:51
私も悩んでいる最中だったりして。
調査中ですので、少し時間を下さい。




2522 カーソルが? コメント数:  19件
  うらら 2003/04/19 (土) 11:34
こんにちは、毎度お世話になります。

今不可解な現象に悩まされております。
LeftBarのカーソルがcrRightArrowにプロパティエディタで設定しても他の
カーソルになってしまうのです。他のコンポーネントとリソースが競合しているのかもしれませんが、
明示的にLeftBarのカーソルにcrRightArrowを代入するのはどうするのでしょうか?
過去ログ等も探したのですが無いようなのでお願いします。



2521 Re^3: 画面分割 コメント数:  0件
  本田勝彦 2003/04/06 (日) 20:24
>  画面分割したとき、スクロールバーをクリックしたときにクリックしたほうの >TEditor にフォーカスを移せないものでしょうか。

heditor.pas の4,557行目あたりの

WM_NCLBUTTONDOWN, WM_NCMBUTTONDOWN, WM_NCRBUTTONDOWN:
 if not (csDesigning in ComponentState) and not Focused and
  (TWMNCHitMessage(Message).HitTest = HTCLIENT) then
   Windows.SetFocus(Handle);

というのを
  (TWMNCHitMessage(Message).HitTest = (HTCLIENT or HTVSCROLL)) then

と書き換えるとお望みの動作を得られます。




2520 Re^2: 画面分割 コメント数:  1件
  ゆうきひろ 2003/04/05 (土) 19:35
 たびたび恐れ入ります。
 画面分割したとき、スクロールバーをクリックしたときにクリックしたほうの TEditor にフォーカスを移せないものでしょうか。たとえば以下のようなコードではスクロールしたい方の TEditor(エディタ部)をクリックしてフォーカスを移さないといけないのでいまいち同期のありがたみが薄いです(^^;)。

procedure TForm1.Editor1TopRowChange(Sender: TObject);
begin
 if Editor2 <> Nil then
  if ActiveEd = Editor1 then Editor2.TopRow := Editor1.TopRow
  else            Editor1.TopRow := Editor2.TopRow;
end;



2519 Re: 画面分割 コメント数:  2件
  ゆうきひろ 2003/04/05 (土) 18:48
>  ExchangeList メソッドを使用して画面を左右分割したとき、両画面のスクロールを一致させることは可能でしょうか?
property OnTopRowChange: TNotifyEvent;
 こんなのがあったのですね(^^;)。失礼しました。




2518 画面分割 コメント数:  3件
  ゆうきひろ 2003/04/05 (土) 14:09
 ExchangeList メソッドを使用して画面を左右分割したとき、両画面のスクロールを一致させることは可能でしょうか?



2517 Re: TEditorの縦書き版 コメント数:  0件
  本田勝彦 2003/03/28 (金) 01:21
ダンロードして見ました。

が、これ TEditor かなぁ? (^^; すごすぎ・・・




2516 TEditorの縦書き版 コメント数:  1件
  ゆうきひろ 2003/03/26 (水) 23:17
 こんばんわ。お久しぶりです。
 http://truestories.hypermart.net/freesofts.html
 コンポではないのですが TEditor(実際はTEditorEx)を継承して作成したらしい縦書き用のアウトラインプロセッサのようです。
 これを見たとき「ああ、先を越されてしまった」と思いました(^^;)。



2515 TEditor ver 2.43 コメント数:  0件
  本田勝彦 2003/03/17 (月) 00:08
公開しました。先日よりご指摘頂きました
undo クリアの件と、動的に生成して Name プロパティを設定した場合のメモリーリークの件に対応しました。



2514 Re: 複数行インデントについて コメント数:  0件
  Km   | CQE03114@nifty.ne.jp 2003/03/12 (水) 23:13
遊歩人さん、こんにちは。

> 複数行インデントの実現方法を伝授願いますか?

とりあえず、以下に書き込んでみました。雰囲気だけでも掴んでくださいな。
http://homepage2.nifty.com/Km/




2513 Re: 複数行インデントについて コメント数:  0件
  本田勝彦 2003/03/12 (水) 22:55
> 複数行インデントの実現方法を伝授願いますか?

選択された行に対しては SelIndent, SelUnIndent, SelTabIndent,
SelTabUnIndent メソッドがあります。
矩形選択状態にも対応しています。




2512 複数行インデントについて コメント数:  2件
  遊歩人 2003/03/12 (水) 20:08
みなさん、こんにちは。

複数行インデントの実現方法を伝授願いますか?



2511 Re^7: PerlFountainについて コメント数:  0件
  本田勝彦 2003/03/12 (水) 10:06
皆さん検証ありがとうございます。

頂いた情報を元に新バージョン作って見たいと思います。
結構煩雑になりそうではありますが。

当初、ピアソンの入門書を片手に開発を進めました。
本屋で眺めて、一番心穏やかに読み進められそうだったのでね。

print << 'token'; こんなの出てたかなぁ^^;



2510 Re^6: PerlFountainについて コメント数:  1件
  にしの 2003/03/12 (水) 08:56
確かにスペース入ってますね。
追試してみました。

print<< "TEST";
aaa;
TEST

print<< 'TEST';
aaa;
TEST

どちらも、TESTを終端として(TESTは表示されずに)処理されました。
ただし、
print << TEST;
はエラーです。
ダブルコートやシングルコートされていれば、空白を終端文字列と見なさないようです。



2509 Re^5: PerlFountainについて コメント数:  2件
  DR-X   | dr-x@nifty.com 2003/03/12 (水) 05:45
 http://homepage3.nifty.com/x-labo/
>version 5.00502で試したところ、最初に現れる空行までが扱われます。
>処理系によって処理内容が違えば、それは別の言語になるのでは?

あら、そうですか。

私はPerlはほとんど使ったことはなく試したわけではないんです。

ただ、Googleで「Perl ヒアドキュメント」で最初にでてくるサンプル
でも空白はあいていたりします。(他でも見たことあります)

私の考えでは、

・空白をキーにすることはほとんどない。他で代用可能。
・空白をあけないと見づらい。

などの理由から、そういう処理にしているのもあるんではないかなぁと思
っています。

では。




2508 Re^4: PerlFountainについて コメント数:  3件
  にしの 2003/03/11 (火) 23:32
> そういうサンプルもみたことあるので、いける処理系もあるんでは
> ないかと思います。
>
空白の扱いは、僕が書いたとおりです。
version 5.00502で試したところ、最初に現れる空行までが扱われます。
処理系によって処理内容が違えば、それは別の言語になるのでは?
同じperlで、処理内容が全く違うとは考えられません。それともperl6ではそうなってるんでしょうかね。perl6が手元に無いので試せませんが。

perl5では、

print << abc;
はエラー。
print << ;
は、最初に現れる空行までを出力。
print <<;
も、最初に現れる空行までを出力。
print <<
(<<の直後に改行)はエラー

となりました。



2507 Re^3: PerlFountainについて コメント数:  4件
  DR-X   | dr-x@nifty.com 2003/03/11 (火) 19:09
 http://homepage3.nifty.com/x-labo/
>print <<abc;
>
>というように、<< と abc に空白を付けなければダイジョブです。

そういう問題だったんですね^^;

自作のパーサーがうまいこと動かないので、PerlFountainを試した
ところ不可解な動きをしたので、なにかバグがあるのかなと思って
書いてみました。

こちらのほうも、いろいろやってたらうまいこと動きました。あり
がとうございます。

>空白は許されるのでしょうか?

そういうサンプルもみたことあるので、いける処理系もあるんでは
ないかと思います。

では。



2506 Re^3: 動的作成時のNameプロパティ変更 コメント数:  0件
  十五夜るな  | luna@col.ne.jp 2003/03/11 (火) 14:30
 http://www.col.ne.jp/~luna
迅速な対応ありがとうございました。
おかげさまで、無事問題解決いたしました。



2505 Re^3: PerlFountainについて コメント数:  0件
  にしの 2003/03/11 (火) 10:26
> 空白がある場合、toHereDocument であるのに、それをキャンセルするための
> DataStr が '' になってしまうので、破綻していました。
>
> 空白は許されるのでしょうか?

ちょっと古いですが、赤ラクダ本には、
「<<と終端文字列の間にスペースを空けてはならない(スペースを空けると、空の識別子を指定したと見なされ、最初に現れる空行までが文字列の値になる」
とあります。
こんな例もありました。
# 次の行を10回出力
print << x 10;
これを10回。


試して気になったのが、
print <<ABC; # このコメントがあるとちゃんと処理されない
this line
ABC
や、
print <<ABC, <<DEF;
ここだけ処理され
ABC
ここが処理されない
DEF
というのが認識されないというとこですね。



2504 Re^2: PerlFountainについて コメント数:  6件
  本田勝彦 2003/03/10 (月) 22:57
原因判明^^;

print <<abc;

というように、<< と abc に空白を付けなければダイジョブです。
ヘルパーメソッドの HereEndStr で、<< の直後に空白がある場合は無視する仕様
になっているのが原因とも言えるし、
toHereDocument を取得する際に << の直後に空白を許可しているのが原因とも
言えます。

空白がある場合、toHereDocument であるのに、それをキャンセルするための
DataStr が '' になってしまうので、破綻していました。

空白は許されるのでしょうか?



2503 Re: PerlFountainについて コメント数:  7件
  本田勝彦 2003/03/10 (月) 22:41
> LastTokenBracketに渡ってくるData.DataStrが空になっていて、そ
> こでヒアドキュメントが終わってしまいます。

確認出来ました。原因はまだ判明していません。もう少し時間を下さい。



2502 Re^2: 動的作成時のNameプロパティ変更 コメント数:  1件
  本田勝彦 2003/03/10 (月) 22:40
確認出来ました。

7,960行目あたりに
procedure TEditor.WMSetText(var Message: TMessage);
というのがありますので、

P := StrNew(PChar(LParam));
Lines.Text := String(P);
StrDispose(P); // <- 追加

1行追加して下さい。

ここ、当初から気持ち悪い部分だったのですが、不具合が出なかったので
そのままにしてあった部分です。ご指摘に感謝です。

先日のタブ文字数の変更への対応と合わせて修正版を作成しなくてわ。



2501 PerlFountainについて コメント数:  8件
  DR-X   | dr-x@nifty.com 2003/03/10 (月) 16:23

本田さん、おひさしぶりです。

PerlFountainのヒアドキュメントのところなんですが、なにもない
行を何行かいれると正しく動作しないようです。

(正しく動く例)
print << abc;
bbbbbbb
ccccccc
abc

(正しく動かない例)
print << abc;

bbbbb

ccccc

abc

LastTokenBracketに渡ってくるData.DataStrが空になっていて、そ
こでヒアドキュメントが終わってしまいます。

Data.DataStrの更新がうまくいってないように思うのですが、いろ
いろやってみてできませんでした。

直接PerlFountainを使用するわけではないのですが、DataStrを使用
したいので、なにかよい方法がありましたら教えてください。