~katsuhiko メッセージボード

back 2251-2300

2301-2350

2351-2400


2350 折り返しのインデント コメント数:  1件
  TEditorFan 2002/10/09 (水) 19:07
いつもお世話になります。
WrapByteで折り返されたものを元のインデントにあわせて整形することはできますか?



2349 Re^2: CreateProcessについて コメント数:  0件
  喜太郎 2002/10/09 (水) 15:31
>  ここで聞くような内容の質問ではないと思いますが。
>  Delphi-MLあたりで聞いたらどうでしょ?

失礼しました。
他をあたります。。



2348 Re: CreateProcessについて コメント数:  1件
  VXO 2002/10/09 (水) 01:55
> CreateProcessについて勉強中なのですが、第二引数のコマンドラインで
 ここで聞くような内容の質問ではないと思いますが。
 Delphi-MLあたりで聞いたらどうでしょ?



2347 CreateProcessについて コメント数:  2件
  喜太郎 2002/10/08 (火) 18:29
初めて投稿させて頂きます。
CreateProcessについて勉強中なのですが、第二引数のコマンドラインで
悩んでおります。

やりたい事
単純にCドライブのdirを実行させたい

コード
*第二引数→Commandには'dir c:'コマンドライン
Destには'c:test.dat'結果の保存先
CreateProcess(nil,
PChar(Format('%s > %s',[Command,Dest])),
nil,
nil,
False,
0,
nil,
nil,
SI,
PI)
実行すると、CPU負荷が100%になって何時までも終了しません。
そのため、結果も得られません。
コマンドラインが悪いのではないかと思っているのですが、
どのような対処方法で解決できるのでしょうか?
バッチファイルをdir c: > c:test.datで作ってうまくいくので、
同じようにしたんだが。。。
宜しくお願いします。



2346 Re: 複数行のインデント コメント数:  0件
  Km  | 2002/10/08 (火) 11:57
> 複数行のインデントはどういうふうにすればいいのでしょうか。
> 複数選んで、[SHIFT]+TABとかスペースでできるといいのですが..

SelTabIndentメソッドを使えばよいです。
行選択時にタブキーが押されたらOnKeyPressイベントでタブキーをはじき、
OnKeyDownイベントでインデント/アンインデント処理すればよいです。
ただし、矩形選択時は行選択の条件を外したほうが良いでしょう。



2345 複数行のインデント コメント数:  1件
  TEditorFan 2002/10/08 (火) 11:11
複数行のインデントはどういうふうにすればいいのでしょうか。
複数選んで、[SHIFT]+TABとかスペースでできるといいのですが..



2344 コピー操作のキー コメント数:  0件
  TEditorFan 2002/10/08 (火) 10:53
他のエディタやメモ帳のようにShift+Delキーによるコピーはできないのでしょうか?



2343 Re^3: リンク、張らせていただきました。 コメント数:  0件
  本田勝彦 2002/10/04 (金) 20:49
> 囲碁にはまってたんですか。私はもっぱらigowinだけです。
> しかも15級(弱い(^^;)

私もそんなモンです。よわよわ^^



2342 Re^2: リンク、張らせていただきました。 コメント数:  1件
  Km  | 2002/10/04 (金) 01:17
> ウチにも、囲碁のリンク作りますね。
>
> 最近 TEditor の更新が放置されているワケがばれてしまいました^^;

囲碁にはまってたんですか。私はもっぱらigowinだけです。
しかも15級(弱い(^^;)



2341 Re: リンク、張らせていただきました。 コメント数:  2件
  本田勝彦 2002/10/03 (木) 22:45
> リンク、今日中に追加しますよ〜。
> で私のHPはhttp://hokkaidouzinn.hp.infoseek.co.jp/
> 七夜くんのHPはhttp://members.tripod.co.jp/nanaya78/
> 七夜くんのHPでは独自に囲碁サーバーあるので緊急避難用に使えます。
> 情報は掲示板でみっけるといいと思います。
> つながらないときはとりあえず掲示板見るといいかもしれ

どうもです。
ウチにも、囲碁のリンク作りますね。

最近 TEditor の更新が放置されているワケがばれてしまいました^^;



2340 リンク、張らせていただきました。 コメント数:  3件
  北海道人 2002/10/03 (木) 22:43
 http://hokkaidouzinn.hp.infoseek.co.jp/
リンク、今日中に追加しますよ〜。
で私のHPはhttp://hokkaidouzinn.hp.infoseek.co.jp/
七夜くんのHPはhttp://members.tripod.co.jp/nanaya78/
七夜くんのHPでは独自に囲碁サーバーあるので緊急避難用に使えます。
情報は掲示板でみっけるといいと思います。
つながらないときはとりあえず掲示板見るといいかもしれません。



2339 Re: Delphi7インストール コメント数:  0件
  ダークネス 2002/10/01 (火) 17:25
>  イベント取ってないけど、ホイールは効きますが。
>  イベントだけ来ないのかな?

いえ、D7で使おうとするとホイールのイベント自体が
オブジェクトインスペクタから消えて無くなっちゃいました
で、私が要らぬ部分まで消してしまったのかな?と思いまして。


>  警告:安全でないコードString index to var param
>
>  pointerもだめなようですね

確かにPCharとかもザクザク警告されちゃいますね。



2338 Re^2: Delphi7インストール コメント数:  1件
  きよあき 2002/09/30 (月) 22:00
> D7だとホイール関係のイベント等が使えなくなってるような気が
> したのですが、使えてますか?

 イベント取ってないけど、ホイールは効きますが。
 イベントだけ来ないのかな?

 あと、TEditorとは直接関係ありませんが、結構ワーニング出ますね。

 たとえば
 F.ReadBuffer(S[1],2);
 SはString
 で
 警告:安全でないコードString index to var param

 pointerもだめなようですね



2337 Re: Delphi7インストール コメント数:  2件
  ダークネス 2002/09/30 (月) 19:20
> 一応、こちらのHPで落としてきたものを入れてみましたが、
> デファイン文でエラーになったので、その辺をコメントアウトで

D7だとホイール関係のイベント等が使えなくなってるような気が
したのですが、使えてますか?



2336 Delphi7インストール コメント数:  4件
  きよあき 2002/09/28 (土) 17:25
Delphi7が来たのでインストールしてみました、
付属のおまけ?CDに、TEditor入ってましたね。

一応、こちらのHPで落としてきたものを入れてみましたが、
デファイン文でエラーになったので、その辺をコメントアウトで
無事コンポーネントを登録出来ました。

Delphi Studio 7 ENTERPRISE



2335 TEditorの予約語 コメント数:  4件
  笹川賢一 2002/09/19 (木) 22:54
本田さん こんばんは。お久しぶりです。

予約語のカラー表示のことで教えてください。
Lisp系言語のためのエディタを考えています。2つのことで悩んでいます。
(1)
integer->char のようなキーワードを1つの予約語したいのですがどうしたらいいでしょうか?

(2)
2種類以上の色分けをするにはどうしたらいいでしょうか?
例えば、define は茶色、sub1 は青 のようにです。

よろしくお願いします。 



2334 Re^3: 表示行末のWrapping処理について コメント数:  0件
  Km  | 2002/09/07 (土) 18:03
江頭 慎一郎さん、こんにちは。

> の "enum" を適当な変数名に書き換える。 enumはCのkeywordで変数名と
> して使えないため compilerに誤認されてしまいます(多分)。
> 可能でしたら original source の変数名を変更していただけると書換え
> なしにinstallできるようになると思います。

hOledd.pasのfunction Clone(out enum: IEnumFormatEtc): HResult; stdcall;
(とその実装部)のenumをenumetcとして実行したところうまくいきました。
確かにCではenumは予約語ですね。
#だからCloneをimplementationに移してBCBから見えなくしたら動いたんだ。
#言われるまで全然、気が付かなかった(^^;;;



2333 RubyFountain コメント数:  1件
  sakazuki 2002/09/07 (土) 17:58
 http://homepage2.nifty.com/sakazuki/
sakazukiです。

みずほさんの開発された、RubyFountainの公開を引き継ぎました。
http://homepage2.nifty.com/sakazuki/delphicompo.html

今後は、こちらで公開します。



2332 Re^2: 表示行末のWrapping処理について コメント数:  1件
  江頭 慎一郎  | 2002/09/07 (土) 14:35
こんにちは、以前質問させていただいた江頭です。 勝彦さんの提案を参考に
問題解決することができました。 TResEditorも大変参考になりました。
ありがとうございます。

BCB5でTOleddEditorを使う方法はKmさんにより報告されてますが、hOledd.pas
の書換えなしで使う方法を報告させていただきます。 再現性のcheckをお願い
します。

1.(BCBが作成する)hOledd.hpp中

HRESULT __stdcall Clone(/* out */ _di_IEnumFORMATETC &enum );

の "enum" を適当な変数名に書き換える。 enumはCのkeywordで変数名と
して使えないため compilerに誤認されてしまいます(多分)。
可能でしたら original source の変数名を変更していただけると書換え
なしにinstallできるようになると思います。

2.Unit1.h 等のheader fileに次の一行を追加

#include <axctrls.hpp>

Delphi componentをBCBで使うと「演算子のoverloadに関するerror」が
でがちですが、この方法で解消されることが多いです。
但し、error解消後はcomment outしても正常にcompileされたりするので
なんだかわけがわかりません。

とりあえずご連絡させて頂きました。 また寄せていただきます。

江頭 慎一郎




2331 Re^2: TEditorで作りました。ソースコードエディタCeta(ツェータ) コメント数:  0件
  風晶  | 2002/08/26 (月) 04:17
 http://homepage2.nifty.com/ssfu/
こんにちは、風晶です。
> これからも TEditor をよろしくお願いいたします。
有り難うございます。現在ヘルプドキュメントの整理が終了したβ版の公開を開始しております。Windows2000/XPへの対応が出来次第、本バージョンにあげる予定です。

> リンクの件修正いたしました。
ありがとうございました。




2330 Re: TEditorで作りました。ソースコードエディタCeta(ツェータ) コメント数:  1件
  本田勝彦 2002/08/26 (月) 01:27
こんにちは。頑張ってますね〜。
これからも TEditor をよろしくお願いいたします。

リンクの件修正いたしました。




2329 TEditorで作りました。ソースコードエディタCeta(ツェータ) コメント数:  2件
  風晶  | 2002/08/23 (金) 22:15
 http://homepage2.nifty.com/ssfu/
風晶と言います。
ホントはKmさまのTEditorExを使っているのですが、本田勝彦さまのTStringPrinter
やTKeyMacroなどを利用しています。
1年ほど前からずうっと作っていたんですけど、ようやく普通に使えるモノ(Ver2.50)に仕上がりました。現在バグ取りとヘルプの整理が終わっていない、α版を公開しています。
宜しければ覗いてみて下さい。
TEditorを使ったソフトが又一つできました、と言うことで、本田勝彦さま、Kmさま、どうもありがとうございました。
http://homepage2.nifty.com/ssfu/
fenjin@nifty.com



2328 Re^2: 表示行末のWrapping処理について コメント数:  0件
  江頭慎一郎  | 2002/08/22 (木) 20:45
> TEditorScreenStrings の StrToWrapList, WrapCount メソッドを
> override して、特定パターンの文字列が折り返されないようにするか、
>
> $xx を一つのトークンとして認識する Fountain をこしらえてあてがい、
> WrapOption.WordBreak プロパティを True に設定する
>
> という方法が考えられますね。挑戦してみて下さい。
>
> 1番目のサンプルが開発日誌のページに TResEditor として上がっています。

早速お返事頂きありがとうございます。Just Sunday Programmerなので週末
にでもやってみます。 挫折しましたらまた参りますので、よろしくお願い
いたします。 どうもありがとうございました。

江頭



2327 Re: 表示行末のWrapping処理について コメント数:  3件
  本田勝彦 2002/08/21 (水) 21:55
> しかし、表示行末折り返しで '$xx'が分断され、行末にアイコン、次行頭に'xx'
> や'x'等の分断された文字が表示されてしまう状態です。それを「隠す」のは可能
> なのですがいかがなものかと思われ、行末のWrapping処理でなんとかできないか
> 考えていますが、技術的に未熟なもので改善の糸口がつかめません。なにかヒント

TEditorScreenStrings の StrToWrapList, WrapCount メソッドを
override して、特定パターンの文字列が折り返されないようにするか、

$xx を一つのトークンとして認識する Fountain をこしらえてあてがい、
WrapOption.WordBreak プロパティを True に設定する

という方法が考えられますね。挑戦してみて下さい。

1番目のサンプルが開発日誌のページに TResEditor として上がっています。




2326 Re^3: 最初の行への文字列追加について コメント数:  0件
  本田勝彦 2002/08/21 (水) 21:49
> # これも、バージョンアップ間隔が伸びたおかげ?
> # よいような、わるいような・・・

最近、気力体力の限界を感じる鉄腕アトム世代でし^^;



2325 表示行末のWrapping処理について コメント数:  4件
  江頭慎一郎  | 2002/08/21 (水) 12:59
こんにちわ。初めて質問させていただきます。江頭といいます。

現在テキスト中にアイコンを表示させることを考えており、OnDrawLineで文中の
文字列 '$xx'(xxは数値)をbitmapで上描きする仕様を考えています。

しかし、表示行末折り返しで '$xx'が分断され、行末にアイコン、次行頭に'xx'
や'x'等の分断された文字が表示されてしまう状態です。それを「隠す」のは可能
なのですがいかがなものかと思われ、行末のWrapping処理でなんとかできないか
考えていますが、技術的に未熟なもので改善の糸口がつかめません。なにかヒント
のようなものが頂けたらと思い投稿してみました。是非ご教授お願いいたします。
当方BCB5 Proを使用しております。

江頭



2324 Re^2: 最初の行への文字列追加について コメント数:  1件
  sakazuki 2002/08/21 (水) 06:31
 http://homepage2.nifty.com/sakazuki/rde.html
> 単純に、TStringsのデフォルトにあわせたのだと思います。
> デフォルトとは違う動作を、同じ関数に定義されると困ることが多いです。
> 必要ならば、AddNoBreakLineなど、別の関数名で追加したほうがいいと思います。
なるほど。そうかもしれませんね。
とりあえずは、該当個所の修正で個人的に希望の動作は実現できたので、これを使おうと思います。
# 最近TEditor.pas本体を修正することへの抵抗がなくなってきました。
# これも、バージョンアップ間隔が伸びたおかげ?
# よいような、わるいような・・・



2323 Re: 最初の行への文字列追加について コメント数:  2件
  にしの 2002/08/19 (月) 17:43
> こんにちは。sakazukiです。
> 最初の行への文字列追加(Lines.Add(S))の結果は、無条件に改行が付与されて
> ---------
> abc
> [EOF]
> ---------
> になります。
> function TEditorStrings.Add(const S: String): Integer;
> 3314行目で
> Buf := S + #13#10;
> としているためだと思うのですが、
> 上記のような処理にしているのには何か理由がありますか?

単純に、TStringsのデフォルトにあわせたのだと思います。
デフォルトとは違う動作を、同じ関数に定義されると困ることが多いです。
必要ならば、AddNoBreakLineなど、別の関数名で追加したほうがいいと思います。



2322 最初の行への文字列追加について コメント数:  3件
  sakazuki  | 2002/08/19 (月) 13:54
こんにちは。sakazukiです。
最初の行への文字列追加(Lines.Add(S))の結果は、無条件に改行が付与されて
---------
abc
[EOF]
---------
になります。
function TEditorStrings.Add(const S: String): Integer;
3314行目で
Buf := S + #13#10;
としているためだと思うのですが、
上記のような処理にしているのには何か理由がありますか?
個人的には先頭への追加は、下記のようになって欲しいのです。
---------
abc[EOF]
---------




2321 Re^2: メッセージハンドラ コメント数:  0件
  shobohn 2002/08/05 (月) 23:51
ご返答ありがとうございます。

> 今まで誰も使ったことのない機能だったりして(^^;;;

普通にコンポーネントとして使用する分には
気がつかないかもしれませんね。
メッセージハンドラなんて使わないでしょうし。
でも、このようなメッセージに応答してくれるのは
外部アプリが作りやすいので、非常にありがたいです。

EMGetLineについてですが、

L := Min(Message.LParamLo, Length(S));

のMessage.LParamLoが意味するのは、
「バッファの最初のワード」ではなく、
バッファを指す「ポインタの下位ワード」ではないか?
という指摘だったんですが。

System.Move(S[1], Pointer(Message.LParam)^, L);

は今のままでいいと思いますよ。



2320 Re^2: WrapByteの変更でUndo/Redoができなくなる コメント数:  0件
  本田勝彦 2002/08/05 (月) 22:35
> > これは仕様なのでしょうか?
> > それとも回避する方法があるのでしょうか?
>  ヘルプのUndoのところに
>
>  WordWrap, WrapOption プロパティ値を更新したり、Clear, Lines.Clear メソッドを実行すると、Undo, Redo バッファが初期化されますので、Undo, Redo は出来なくなります。
>
> という説明があります。

Undo データの保持方式がそういう仕組みになっているので、
仕様なのです。



2319 Re: メッセージハンドラ コメント数:  0件
  本田勝彦 2002/08/05 (月) 22:33
> 同じく6871〜6884行目
> ここでRとCを求めてるわけですが、Resultにこの値は使われてません。
> どうしてなんでしょうか?

EMPosFromChar が実装された ver 1.60 からこのスタイルになってますね。
バグかも^^; 今まで誰も使ったことのない機能だったりして(^^;;;

Y := TopMargin + (FRow - FTopRow) * GetRowHeight;
X := LeftMargin + (FCol - FTopCol) * FFontWidth;

Y := TopMargin + (R - FTopRow) * GetRowHeight;
X := LeftMargin + (C - FTopCol) * FFontWidth;
が正解なのかもしれません。

少し調べて見ます。ご指摘感謝です。



2318 Re: メッセージハンドラ コメント数:  1件
  本田勝彦 2002/08/05 (月) 22:26
> 2.38のHEditor.pasの6739行目
> L := Min(Message.LParamLo, Length(S));
> となっていますが、LParamはポインタであってサイズではないのでは
> ないでしょうか?

ヘルプからの引用ですが、
>lpch lParamの値です。行内容のコピーを受け取るバッファを指すポインタ
>です。バッファの最初のワードは、 バッファにコピーできる最大文字数を示します。

とありますので、LParam の最初に取得すべきというか、用意されたバッファの長さ
が格納されているハズだという実装なのです。ということは、その下の
System.Move(S[1], Pointer(Message.LParam)^, L);

System.Move(S[1], Pointer(Message.LParamHi)^, L);
としなければならないのかな?

Fox さんの問題点もここにあったのかしらん?



2317 Re: WrapByteの変更でUndo/Redoができなくなる コメント数:  1件
  ゆうきひろ 2002/08/04 (日) 21:07
 http://homepage2.nifty.com/ultla7/mozart/_start.htm
> これは仕様なのでしょうか?
> それとも回避する方法があるのでしょうか?
 ヘルプのUndoのところに

 WordWrap, WrapOption プロパティ値を更新したり、Clear, Lines.Clear メソッドを実行すると、Undo, Redo バッファが初期化されますので、Undo, Redo は出来なくなります。

という説明があります。




2316 メッセージハンドラ コメント数:  3件
  shobohn 2002/08/04 (日) 02:38
失礼ついでにメッセージハンドラについてお聞きしたいのですが、

2.38のHEditor.pasの6739行目
L := Min(Message.LParamLo, Length(S));
となっていますが、LParamはポインタであってサイズではないのでは
ないでしょうか?

同じく6871〜6884行目
ここでRとCを求めてるわけですが、Resultにこの値は使われてません。
どうしてなんでしょうか?

私のまったくの見当違い、または既知、既出でしたらすみません。
それでは。



2315 Re^8: EMGetLineについて。 コメント数:  0件
  shobohn  | 2002/08/04 (日) 02:15
 http://www.geocities.co.jp/SiliconValley-Oakland/4672/
本田さん、Foxさん、始めまして。shobohnと申します。

私もTEditor使用エディタ用のツールを公開しているのですが、
最近、私のほうの掲示板でも似たような話題がありましたので、
いろいろ調べてみた結果をご報告したいと思います。

どうやら、Win98(SE)ではEM_GETLINEのLParamがポインタとして
扱われていないようなのです。つまり呼び出し側が、ポインタのつもりで
送った値がアドレス変換されずにそのままエディタ側に送られているので、
同一プロセス内では動作しますが、他プロセス(外部アプリなど)から
EM_GETLINEを送ると無効なポインタに書き込もうとするためエラーが
出てしまうのです。
なので、メモ帳などにEM_GETLINEを送った場合でも同様にエラーが出ます。

結局、Win98の不具合(仕様)というのが私の結論です。

長文失礼致しました。それでは。



2314 Re^4: WM_GETTEXT は、成功しました。(動作報告。) コメント数:  0件
  Fox 2002/07/27 (土) 11:03
本田 さん こんにちは

> 誰かが作られたエディタであるならば、素の TEditor が使われているとは
> 限らない
> という可能性も無いことは無いと言えますね。

EM_GETLINE は、2つのエディタで試してみました。
この辺は、作者さんに確認してみば判るのですが、
改造しても、EM_GETLINEを弄って無ければ、
問題ないですよね?


> この際、Delphi を導入されてみてはいかがでしょう?

パーソナル版の存在は、知っていました。
しかし、私の環境には、Setupする事が出来ないんです。
物理的な問題で。
Delphiも、Builderも、ちょっとだけ触ったことがある程度で、
標準以外のコンポーネントを使う方法も知りませんし。

今回は、WM_GETTEXT で行ってみようと思います。
色々有り難うございました。




2313 Re^3: WM_GETTEXT は、成功しました。(動作報告。) コメント数:  1件
  本田勝彦 2002/07/27 (土) 08:22
誰かが作られたエディタであるならば、素の TEditor が使われているとは限らない
という可能性も無いことは無いと言えますね。

この際、Delphi を導入されてみてはいかがでしょう?
http://www.borland.co.jp/delphi/personal/
で無償のパーソナル版がダウンロード出来ます。
パーソナル版でも TEditor は使えますよ。




2312 Re^2: WM_GETTEXT は、成功しました。(動作報告。) コメント数:  2件
  Fox 2002/07/26 (金) 23:57
本田 さん こんばんは。

> TMemo でも成功しますか?

すいません、最初に、よく説明をしておけば良かったのですが、
実は、Delphiを持ってませんし、パスカルでの開発経験がありません。
TEditor を使ったエディタに、独自の機能を追加する、
ツールを作っています。
ですので、TMemo についての知識はありません。
確か、Editに相当するもの?


> それと、ハンドルの取得は成功していますでしょうか?

これは、TEditor のハンドルで良いのですよね?
勿論、確認しています。
EM_LINEINDEX
EM_LINELENGTH
EM_GETSEL
EM_SETSEL
EM_LINEFROMCHAR
EM_GETLINECOUNT
は、確認済みです。


>> 新たに、WM_GETTEXT を試してみたのですが、こちらは、
>> 上手く行きます。

> 同じ様な実装に EMGetLine を書き換えて試して見て頂けますでしょうか?

これが出来たら、私も色々試せるのですが。
上に書いたように、Delphiでの実行が出来ないんです。
逆に、書き換えたTEditor を載せた、単純なフォームだけの、
ツールを頂けたら、テストできるのですが。(お時間があったら。)

因みに、Webを検索していて、Win98SEでもエラーに為ると言う書き込みを、
見ました。

環境:Win98、IE4



2311 Re: WM_GETTEXT は、成功しました。(動作報告。) コメント数:  3件
  本田勝彦 2002/07/26 (金) 20:41
TMemo でも成功しますか?
それと、ハンドルの取得は成功していますでしょうか?

> 新たに、WM_GETTEXT を試してみたのですが、こちらは、
> 上手く行きます。
> 98系では、サイズ制限がありますが…。

同じ様な実装に EMGetLine を書き換えて試して見て頂けますでしょうか?



2310 WM_GETTEXT は、成功しました。(動作報告。) コメント数:  4件
  Fox 2002/07/26 (金) 11:37
本田 さん こんにちは

新たに、WM_GETTEXT を試してみたのですが、こちらは、
上手く行きます。
98系では、サイズ制限がありますが…。





2309 Re^7: EMGetLineについて。 コメント数:  1件
  Fox 2002/07/26 (金) 11:35
Km さん こんにちは

> int nLine = 1; // ←文字列を取得する行の行番号
> char szBuffer[ 256 ]; // 文字列を受け取るバッファ
> SendMessage( hEdit, EM_GETLINE, nLine, (LPARAM)(LPCSTR)szBuffer );

遣ってみましたが、ダメでした。
これだと、私が遣ってるものと、余り変わらないような気がします。
元もと動作する環境なら、これでもいけると思いますが…。
(取り敢えず文字列取得の確認だけなら、サイズの設定が、
無くても、szBuffer内のゴミが文字列サイズを上回るサイズに、
相当すれば動く。)

後、今回のケースのような物に、(LPCSTR)を使うとどう言った効果が、
あるんでしょうか?




2308 Re^6: EMGetLineについて。 コメント数:  2件
  Km  | 2002/07/25 (木) 13:10
> > szbuffの領域確保の方法が間違ってます。sizeof(szbuff);だと、型のサイ
> > ズでは?
>
> それは、違いますよ。
> sizeofに渡しているのは、文字配列の変数ですので、
> この場合は、配列のサイズが返ります。

すみません。勘違いしてました。
試してはいないのですが、こんな感じでどうでしょうか。

int nLine = 1; // ←文字列を取得する行の行番号
char szBuffer[ 256 ]; // 文字列を受け取るバッファ
SendMessage( hEdit, EM_GETLINE, nLine, (LPARAM)(LPCSTR)szBuffer );




2307 Re^5: EMGetLineについて。 コメント数:  3件
  Fox 2002/07/25 (木) 11:28
km さん、こんにちは。

> szbuffの領域確保の方法が間違ってます。sizeof(szbuff);だと、型のサイ
> ズでは?

それは、違いますよ。
sizeofに渡しているのは、文字配列の変数ですので、
この場合は、配列のサイズが返ります。

例:
char szLine[32] = "";

printf("%d\n", sizeof(szLine));
printf("%d\n", sizeof(char)); // 型のサイズ取得には、型名を渡す。

結果。
32
1 // 型のサイズ

この例では、*(WORD*)szLine = sizeof(szLine); で、
szLine[0] に、32 (0x20)
szLine[1] に、0
が入ります。


> szbuffは文字列を受け取るバッファなので、領域の確保してください。

char szLine[32] = "";
が、領域の確保にあたります。
*(WORD*)szLine = sizeof(szLine); で、
サイズを埋め込みます。




2306 Re^4: EMGetLineについて。 コメント数:  0件
  Fox 2002/07/25 (木) 11:27
本田さん、こんにちは。

素早いレスに、感謝します。

i はどうやって取得されてますでしょうか?

実験のために簡略化して、単純なループをしています。
(0スタートの。)
で、ループ数以上の行データを書き込んでます。
ループが3なら、3行以上書き込む感じです。

後、データサイズに、わざと大きな物を渡して、
文字列数でデータを返させるようにもしてみましたが、
ダメでした。
(「Min」で処理分けしてるので、両方遣ってみた。)

System.Move が別のプログラム中の変数に対して、
書き込み出来るものなら、そちらが悪いんじゃ無いでしょうか?

文字列を取得するのに、どうしても必要なんですが、
System の問題なら、諦めます。




2305 Re^4: EMGetLineについて。 コメント数:  4件
  Km  | 2002/07/25 (木) 09:57
> > *(WORD*)szbuff = sizeof(szbuff);
> > nLen = SendMessage(hEdit, EM_GETLINE, (WPARAM)i, (LPARAM)szbuff);
>
> これ、Cでないかい?・・・Km さ〜ん(^^;

szbuffの領域確保の方法が間違ってます。sizeof(szbuff);だと、型のサイズでは?
szbuffは文字列を受け取るバッファなので、領域の確保してください。



2304 Re: 行数、列数からキャレットの座標を取得 コメント数:  0件
  本田勝彦 2002/07/25 (木) 02:27
> 行数、列数からキャレットの座標(x,y)を取得することは出来るのでしょうか。

キャレットがそこに居れば、GetCaretPos でしょうけれども、違いますよね。
heditor.pas に TEditor.SetCaretPosition というメソッドがありますので、
参考にして見て下さい。



2303 Re^3: EMGetLineについて。 コメント数:  6件
  本田勝彦 2002/07/25 (木) 02:23
> *(WORD*)szbuff = sizeof(szbuff);
> nLen = SendMessage(hEdit, EM_GETLINE, (WPARAM)i, (LPARAM)szbuff);

これ、Cでないかい?・・・Km さ〜ん(^^;

> 判らないなりに、TEditor のソースも見てみましたが、
> 問題ないような気がします。
> System クラス?のバグでしょうか?

szbuff のアドレスが渡ればそこに流し込んでくれるハズなのですが。

i はどうやって取得されてますでしょうか?



2302 Re^2: EMGetLineについて。 コメント数:  7件
  Fox 2002/07/25 (木) 01:10
本田 さん こんばんは

早速のレス有り難うございます。

> で取得出来ました。Edit1 で旨くいったコードを見せて頂けると私が実装で
> 勘違いしている部分が判明するかもしれません。

> が、TEditor のプロパティを使うともっと簡単に取得出来ます。

全く別のプログラムから、Msgを投げてます。
なので、プロパティは、使えません。

それと、Editとは、Win標準の物で、Delphiの物でないです。
以下が、実験したコードの一部分です。
本田さんの物と、同じ様な感じです。(多分。)

*(WORD*)szbuff = sizeof(szbuff);
nLen = SendMessage(hEdit, EM_GETLINE, (WPARAM)i, (LPARAM)szbuff);

判らないなりに、TEditor のソースも見てみましたが、
問題ないような気がします。
System クラス?のバグでしょうか?



2301 行数、列数からキャレットの座標を取得 コメント数:  1件
  武岡 2002/07/24 (水) 23:21
先日、TEditorコンポーネントをDLさせていただきました。
そこで、一つ質問があるのですが
行数、列数からキャレットの座標(x,y)を取得することは出来るのでしょうか。