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


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
0713
Queryスペース区切りのファイルを読み込んで表で表示したい2解決


Query

リンク

2021/7/13(Tue) 18:31:26|NO.93215

システムのログなどを読み込み、表にしたいのですが、ログがスペース区切りです。
Microsoft Excelのようにスペース区切りでも表にして表示させたいです。完成図はこんな
感じです。

<syslog.log>
2021-07-10 15:24 System Started. 正常
2021-07-10 15:25 Can't Create Query. 0x0012
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[以下略]

<アプリ内>
| 日時 | 時間 | 内容 | 値 |
|----------|--------|----------------------|----------|
|2021-07-10| 15:24 |System Started. | 正常 |
|2021-07-10| 15:25 |Can't Create Query. | 0x0012 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
表は画像にするとリンクを張る必要があるので、|と-で簡易的に作りました。
表というのは、SQLiteの表のような要領でアプリ上に表示させたいです。
あくまでこちらのようなかんじです。http://chokuto.ifdef.jp/urawaza/listview2.html
長くなってしまい、お手数をおかけします。HSPを扱ってそんなにたたず、わからないこと
だらけですのでどうかよろしくお願いします。
[以下略]



この記事に返信する


沢渡

リンク

2021/7/13(Tue) 20:02:12|NO.93216

以下のページを参考に簡易的なモジュールを作ってみました。
http://chokuto.ifdef.jp/urawaza/listview1.html
このような形でどうでしょうか?

//簡易的なリストビューコントロール //使い方: // //・listview p1,p2,p3,p4 //リストビューコントロールを配置する。 //p1は横幅(省略時300)、p2は縦幅(省略時200)、p3はウィンドウスタイル(通常は省略して可) //p4は拡張ウィンドウスタイル(通常は省略して可) // //・lv_addcol p1,p2,p3,p4,p5,p6 //リストビューの横列を作成する //p1はリストビューのハンドル、p2は項目名、p3は挿入する横位置、 //p4は横方向のインデックス(省略時はp3と同じ値になる)、 //p5は横幅(省略時は100)、p6は文字の表示位置(0で左、1で右、2で中央。省略時は0) // //・lv_additem p1,p2,p3,p4 //リストビューにアイテムを追加する //p1はリストビューのハンドル、p2は追加する文字列、p3は挿入する縦位置、 //p4は文字列を配置する横方向のインデックス // //・lv_setitem p1,p2,p3,p4 //リストビューに文字列を書き加える //p1はリストビューのハンドル、p2は文字列、p3は縦位置、 //p4は横方向のインデックス #module #define global listview(%1=300,%2=200,%3=0x50000001,%4=0) winobj "SysListView32","",%4,%3,%1,%2 #define global lv_addcol(%1,%2="",%3=0,%4=-1,%5=100,%6=0) _lv_addcol %1,%2,%3,%4,%5,%6 #deffunc _lv_addcol int c_h,str _c_s,int c_p,int _c_i,int c_w,int c_f c_s=_c_s : dim lvc,8 if _c_i<0 : c_i=c_p : else : c_i=_c_i lvc=0xF,c_f,c_w,varptr(c_s),0,c_i sendmsg c_h,0x101B,c_p,varptr(lvc) //LVM_INSERTCOLUMN=0x101B return #define global lv_additem(%1,%2="",%3=0,%4=0) _lv_additem %1,%2,%3,%4,1 #define global lv_setitem(%1,%2="",%3=0,%4=0) _lv_additem %1,%2,%3,%4,0 #deffunc _lv_additem int i_h,str _i_s,int i_p,int i_c,int i_flg i_s=_i_s : dim lvi,13 lvi=1,i_p,i_c,0,0,varptr(i_s) sendmsg i_h,0x1006+(i_flg!=0),0,varptr(lvi) //LVM_SETITEM=0x1006 LVM_INSERTITEM=0x1007 return #global listview 600,300 : lv_id=stat lv_h=objinfo(lv_id,2) //リストビューのハンドル //項目の設定 lv_addcol lv_h,"日付",0 lv_addcol lv_h,"時間",1 lv_addcol lv_h,"内容",2,,300 lv_addcol lv_h,"値",3 note="" : notesel note //noteload "syslog.log" //↑今回は仮にログの内容をnoteaddで入力することにする。実際の使用では以下の2行は削除してください。 noteadd "2021-07-10 15:24 System Started. 正常" noteadd "2021-07-10 15:25 Can't Create Query. 0x0012" repeat notemax noteget buf,cnt split buf," ",res : items=stat //スペースで文字列を分割 if items<1 : continue lv_additem lv_h,res(0),cnt,0 //日付 if items<2 : continue lv_setitem lv_h,res(1),cnt,1 //時間 if items<3 : continue if items<4 { lv_setitem lv_h,res(2),cnt,2 //文字列を3分割しかできなかったのなら、3つめの要素を「内容」に書き込む } else { //最初の2要素と最後の1要素以外の要素を繋ぎ合わせる。 buf2="" repeat items-3,2 if cnt>2 : buf2+=" " buf2+=res(cnt) loop lv_setitem lv_h,buf2,cnt,2 //繋ぎ合わせたものを「内容」に書き込む lv_setitem lv_h,res(items-1),cnt,3 //最後の要素を「値」に書き込む } loop



Query

リンク

2021/7/13(Tue) 22:23:04|NO.93219

ありがとうございます。ファイル読み込みでスペース区切りのログを正しく読み込めました。
ありがとうございました。
スペース区切りの際の挙動をどうするか悩んでいたので役に立ちました。



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