HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1028
csvmesbox内の一番最後の行を削除したい4解決


csv

リンク

2007/10/28(Sun) 11:51:05|NO.12061

すいません、また詰まってしまいました。
最後の行とありますが正確には\nの1個上の行です。
例)
---------
1
2
3
4
5   ←ここの下から2行目の「5」を削除

---------

メモリ上?なら「notedel notemax - 1」で消せますがmesbox内での削除方法がわかりません。
メモリ上削除→mesbox内に1から再表示というようにしていたのですが数が増えると再表示がとても遅くなってしまいます。

ボタンを押した時にmesbox内から削除する方法はないでしょうか?よろしくお願いします。



sdim box,100 a = 0 mesbox box,200,100 : hEdit = objinfo(stat,2) button "TEST", *test button "DEL", *del stop *test a += 1 box = box + a + "\n" objprm 0,box sendmsg hEdit,0xb5,7,0 stop *del ;mesbox内の最後の行(\nを含む下から2行目)を削除 stop



この記事に返信する


f

リンク

2007/10/28(Sun) 12:16:01|NO.12062

素直にnotedelしてobjprmでデータを更新すりゃ済む事なんでね?



csv

リンク

2007/10/28(Sun) 14:14:04|NO.12063

回答ありがとうございます。

>素直にnotedelしてobjprmでデータを更新すりゃ済む事なんでね?

説明足らずですいませんでした。これは質問用に簡易的なプログラムにしたもので
本プログラムはcsvから読み出したりして20行ぐらいになるとnotedelしてobjprmでの再表示が
また1行目からとなりとても処理が遅く、「DEL」ボタンの連打ができない状態です。

そこで、mesbox内から削除する方法があれば再表示しなくてもいいので軽くなると思い質問させていただきました。

引き続きボタンを押した時にmesbox内から削除する方法を教えていただけないでしょうか?



Kpan

リンク

2007/10/28(Sun) 17:50:36|NO.12066

一発で特定行の文字列を削除するような処理は用意されてないので、
そのように動くような処理を自分で組まないとダメです。
http://www.winapi-database.com/Message/EM/

このスクリのまんまじゃダメだけど、考え方として。

*del objsel 0 ; EM_SETSEL sendmsg hEdit, $B1, strlen(box) - 3, strlen(box) ; EM_REPLACESEL sendmsg hEdit, $C2, , ""



csv

リンク

2007/10/28(Sun) 18:35:00|NO.12068

Kpanさん、ありがとうございます、完璧です。

関数系?大文字の命令語はさっぱりですので助かりました。
この質問用のプログラムは数字の桁数があってませんが
本プログラムでは00、01、02という感じなので「-3」の数値を増やして対応しました。
まだ追加することもあると思いますが、このプログラムだと桁数を揃えておけば大丈夫そうですね。

本当にありがとうございました。



ONION software Copyright 1997-2021(c) All rights reserved.