スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ファイル選択サブルーチン(small basic)

さて、SmallBasicね。

少し使って見て感じたのは、初心者用を謳う割にはちょっと弱い部分があるような気がしまして。

挙げたらいくつもあるんだけど、とりあえずファイル関連について。
最初に思ったのは、初心者にファイルのOpen/Closeのためにフルパスを要求するのは酷なんじゃないかと。

…と、思ってファイル選択ダイアログルーチンを作ってみました。

実行画面はこちら↓

fileselect

ほとんどMS-DOS時代の画面っすね。
ウインドウとか画面構成とかボタン配置とか諸々のUIセンスが無いのは御勘弁。



操作方法

このルーチンをコールすると上図のウィンドウが開きますので、ファイル名を選択し、[OK]ボタンを押します。

  • ファイルは、ファイル名が拡張子付きで表示されます。
  • フォルダは、「<…>」で括られて表示されます。
  • 次のページに移動するには「next>>」をクリック。
  • 前のページに戻るには「<<prev」をクリック。
  • 上位ディレクトに上がるには「..」をクリック。

  • ドライブは変更できません。
  • ダブルクリックには対応していません。
  • フォルダ内に入る場合は、フォルダ名を選択して[OK]ボタンを押してください。

組み込み

プログラム内に組み込んで(コピペして)使用します。
注意点として、以下の変数名およびサブルーチン名はプログラム内で使用しているので、組み込む際には重複しないような変数名にしてください。

予約語役割
fileSelectResult選択されたファイルのフルパス
FileSelectファイル選択サブルーチン名
fileSelectClickファイルクリックイベント用サブルーチン名
fileSelectBtnボタンクリックイベント用サブルーチン名

引数・戻値

引数はありません。
このサブルーチンをコールし、ファイル選択して[OK]ボタンを押すと、変数「fileSelectResult」にフルパスが返ります。
また、スタックにも同じ値が積まれて返ります。
スタック値不要の場合は、サブルーチン最後の「Stack.PushValue( "fileselect", fileSelectResult )」をコメントアウトもしくは削除してください。
予約語以外の変数名については、呼び出し前の値を保持しているため変化しません。



プログラム概要

SmallBasicはローカル変数が使えないので、使用する変数を極力減らすような書き方にをしたため、かなり冗長な書き方になっています。
また、コール前の変数値を保持するためにスタックに値を積んでいますが、積む変数を減らしたかったのでローカルで使い変数を全て配列にして一度のスタック操作で終わらせています。

もしプログラムを解析するのであれば、「fsArr["foo"]」を「foo」の様に変換すると多少は読みやすくなります。
(vimだと、「:%s/fsArr\["foo"\]/foo/g」ね。)

あと、SmasllBasicは、「For a[1] = 1 to 10」という書き方ができないので、「For ... EndFor」ループで済むものをわざわざ「While ... EndWhile」にしています。(←これも読みにくい原因の一つ)
一応、最初にプログラム書いた時の「For ... EndFor」をコメントにして残してあります。参考まで。



fileselect.sb

'sample main
FileSelect()
GraphicsWindow.ShowMessage( Stack.PopValue( "fileselect" ), "name" )
Program.End()


'file open dialog
'use value (reserve)
' fileSelectResult : return fullpath
' FileSelect : main routine
' fileSelectClick : event file select
' fileSelectBtn : event OK or CANCEL button
'result
' fileSelectResult : return fullpath
' stack "fileselect"
Sub FileSelect
Stack.PushValue( "fileselect", fsArr )

GraphicsWindow.MouseDown = fileSelectClick
Controls.ButtonClicked = fileSelectBtn

GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawRectangle( 1, 20, 300, 240 )
Controls.AddButton( "OK", 300, 14*20 )
Controls.AddButton( "CANCEL", 300, 14*20+30 )
fsArr["filename"] = Controls.AddTextBox( 10, 14*20 )
Controls.SetSize( fsArr["filename"], 280, 30 )

fsArr["curDir"] = File.GetSettingsFilePath() 'path "test.settings"
fsArr["curDir"] = Program.Directory + "\\"

fsArr["flag"] = 2
While( fsArr["flag"] <> 0 ) 'main loop

'directry up
if( Text.GetLength( fsArr["curDir"] ) > 3 )Then 'top directry check
fsArr["curDir"] = Text.GetSubText( fsArr["curDir"], 1, Text.GetLength( fsArr["curDir"] )-1 )
While( Text.EndsWith( fsArr["curDir"], "\" ) <> "True" )
fsArr["curDir"] = Text.GetSubText( fsArr["curDir"], 1, Text.GetLength( fsArr["curDir"] )-1 )
endwhile
EndIf

fsArr["arrDirs"] = File.GetDirectories( fsArr["curDir"] )
fsArr["arrFiles"] = File.GetFiles( fsArr["curDir"] )
fsArr["arrDirFile"] = ""

' For j = 1 To Array.GetItemCount( fsArr["arrDirs"] )
' fsArr["arrDirFile"][ j ] = Text.GetSubTextToEnd( fsArr["arrDirs"][ j ], Text.GetIndexOf( fsArr["arrDirs"][ j ], "\" )+1 )
' While( Text.IsSubText( fsArr["arrDirFile"][ j ], "\" ) )
' fsArr["arrDirFile"][ j ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ j ], 2 )
' EndWhile
' fsArr["arrDirFile"][ j ] = "<"+ fsArr["arrDirFile"][ j ] + ">"
' EndFor 'j
' For i = 1 To Array.GetItemCount( fsArr["arrFiles"] )
' fsArr["arrDirFile"][ j + i - 1] = Text.GetSubTextToEnd( fsArr["arrFiles"][ i ], Text.GetIndexOf( fsArr["arrFiles"][ i ], "\" )+1 )
' While( Text.IsSubText( fsArr["arrDirFile"][ j + i - 1 ], "\" ) )
' fsArr["arrDirFile"][ j + i - 1 ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ j + i - 1 ] , 2 )
' EndWhile
' EndFor 'i

fsArr["j"] = 1
While( fsArr["j"] <= Array.GetItemCount( fsArr["arrDirs"] ) )
fsArr["arrDirFile"][ fsArr["j"] ] = Text.GetSubTextToEnd( fsArr["arrDirs"][ fsArr["j"] ], Text.GetIndexOf( fsArr["arrDirs"][ fsArr["j"] ], "\" )+1 )
While( Text.IsSubText( fsArr["arrDirFile"][ fsArr["j"] ], "\" ) )
fsArr["arrDirFile"][ fsArr["j"] ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ fsArr["j"] ], 2 )
EndWhile
fsArr["arrDirFile"][ fsArr["j"] ] = "<"+ fsArr["arrDirFile"][ fsArr["j"] ] + ">"
fsArr["j"] = fsArr["j"] + 1
EndWhile
fsArr["i"] = 1
While( fsArr["i"] <= Array.GetItemCount( fsArr["arrFiles"] ) )
fsArr["arrDirFile"][ fsArr["j"] + fsArr["i"] - 1] = Text.GetSubTextToEnd( fsArr["arrFiles"][ fsArr["i"] ], Text.GetIndexOf( fsArr["arrFiles"][ fsArr["i"]], "\" )+1 )
While( Text.IsSubText( fsArr["arrDirFile"][ fsArr["j"] + fsArr["i"] - 1 ], "\" ) )
fsArr["arrDirFile"][ fsArr["j"] + fsArr["i"] - 1 ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ fsArr["j"] + fsArr["i"] - 1 ] , 2 )
EndWhile
fsArr["i"] = fsArr["i"] + 1
EndWhile

'draw file list
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle( 1,1,600,18)
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(10,1, fsArr["curDir"])
fsArr["itemcount"] = Array.GetItemCount( fsArr["arrDirFile"] )
fsArr["page"] = 0
fsArr["flag"] = 2
While( fsArr["flag"] > 1 )
fsArr["flag"] = 2
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle( 2,22,298,238)
GraphicsWindow.BrushColor = "Blue"
If( fsArr["page"] <> 0 )then
GraphicsWindow.DrawText( 10, 20, "< elseif( Text.GetLength( fsArr["curDir"] ) > 3 )Then
GraphicsWindow.DrawText( 10, 20, "..")
EndIf

If( fsArr["page"] * 10 + 10 < fsArr["itemcount"] )then
GraphicsWindow.DrawText( 10, 12*20, "next>>")
EndIf
GraphicsWindow.BrushColor = "Black"

'For i = fsArr["page"] * 10 + 1 To fsArr["page"] * 10 + 10
'fsArr["arrDirFile"][ i ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ i ], Text.GetIndexOf( fsArr["arrDirFile"][ i ], "\" )+1 )
'GraphicsWindow.DrawText( 10, Math.Remainder( ( i - 1 ), 10 )*20+40, fsArr["arrDirFile"][ i ] )
'EndFor

fsArr["i"] = fsArr["page"] * 10 + 1
while( fsArr["i"] <= fsArr["page"] * 10 + 10 )
fsArr["arrDirFile"][ fsArr["i"] ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ fsArr["i"] ], Text.GetIndexOf( fsArr["arrDirFile"][ fsArr["i"] ], "\" )+1 )
GraphicsWindow.DrawText( 10, Math.Remainder( ( fsArr["i"] - 1 ), 10 )*20+40, fsArr["arrDirFile"][ fsArr["i"] ] )
fsArr["i"] = fsArr["i"] + 1
endwhile

While( fsArr["flag"] = 2 )
'event wait loop
Program.Delay(500)
EndWhile
EndWhile

If( fsArr["flag"] = 0 and fsArr["indx"] <= Array.GetItemCount( fsArr["arrDirs"] ) And Controls.GetTextBoxText( fsArr["filename"] ) <> "")then
'sub directory
fsArr["curDir"] = fsArr["arrDirs"][ fsArr["indx"] ] + "\\"
Controls.SetTextBoxText( fsArr["filename"], "" )
fsArr["flag"] = 1
endif
EndWhile

GraphicsWindow.Hide()

If( Controls.GetTextBoxText( fsArr["filename"] ) = "" )then
fileSelectResult = ""
'Stack.PushValue( "fileselect", "" ) 'cancel button
Else
fileSelectResult = fsArr["curDir"] + Controls.GetTextBoxText( fsArr["filename"] )
'Stack.PushValue( "fileselect", fsArr["curDir"] + Controls.GetTextBoxText( fsArr["filename"] ) )
EndIf
'restre value
fsArr = Stack.PopValue( "fileselect" )
Stack.PushValue( "fileselect", fileSelectResult )
EndSub

Sub fileSelectClick
fsArr["mouse_y"] = Math.Floor( (Mouse.MouseY - GraphicsWindow.Top) / 20 )-2

'file select
if( fsArr["mouse_y"] > 0 and fsArr["mouse_y"] < 11 )then
fsArr["indx"] = fsArr["page"] * 10 + fsArr["mouse_y"]
Controls.SetTextBoxText( fsArr["filename"], fsArr["arrDirFile"][ fsArr["indx"] ] )
EndIf

'next>>
if( fsArr["mouse_y"] = 11 and fsArr["page"] * 10 + 10 < fsArr["itemcount"] )then
fsArr["page"] = fsArr["page"] +1
fsArr["flag"] = 3 'exit event loop
EndIf

'< if( fsArr["mouse_y"] = 0 )then
if( fsArr["page"] > 0 )then
fsArr["page"] = fsArr["page"] - 1
fsArr["flag"] = 3 '< Else
fsArr["flag"] = 1 '.. (parent directry) & exit event loop
EndIf
EndIf
EndSub

Sub fileSelectBtn
fsArr["flag"] = 0 'main loop exit
if ( Controls.LastClickedButton = "Button2" )Then
Controls.SetTextBoxText( fsArr["filename"], "" ) 'cancel button
EndIf
EndSub
スポンサーサイト

アニメ番組表取得ソフト その2

悪い予感が当たってしまいました。
the.tvが(多分)4月1日にリニューアルしたため、これまで通りの動作をしなくなってしまいました。

これまで、従来のソフトの仕様で一気に1週間分の番組表が取得できたのですが、リニューアル以後1日分の番組表しか取得できなくなってしまいました。

仕方がないので、ループで1週間分取得するように書き直しました。

が、SmallBasicの時間関数が弱すぎる(泣)
現在の日時を取得する関数しか無いのよね。
しかも文字列。(YYYY/MM/DD形式)

つまり、翌日の日付を取得したい場合、単純に現在の日付に"1"プラスできないので、月や年をまたぐ際にはそれなりの文字列処理をしなくてはならず、「大の月、小の月の判別」「2月は28日」さらに「うるう年」まで考えると、もううんざり。

そんな事態になるまでには、またリニューアルするだろうってコトで、大いなる妥協をすることにしました。
と言うことで、月末の1週間は誤動作します(キリッ)

お金貰うソフトだったらそこらへんキッチリ書きますけど、俺用だから(笑)

実行形式はこちら(thetv_anime_2.zip)

ソースリストは以下。
例によって小文字。



main()
Program.End()

Sub main
init()

today()
day = Stack.PopValue( "today" )
TextWindow.WriteLine( day )

fp = "thetv.txt"
File.WriteContents( fp, "" )

For i = 0 to 6
File.AppendContents( fp, "アニメ" + CRLF )
anime = "http://thetv.jp/program/schedule/list/anime/terrestrial/" + day + "/page:"
Stack.PushValue( "getbangumi", anime )
getBangumi()

'http://thetv.jp/program/schedule/list/drama/terrestrial/
'http://thetv.jp/program/schedule/list/variety/terrestrial/
'http://thetv.jp/program/schedule/list/movie/terrestrial/
'http://thetv.jp/program/schedule/list/sports/terrestrial/
'http://thetv.jp/program/schedule/list/documentary/terrestrial/
'http://thetv.jp/program/schedule/list/other/terrestrial/

date = Text.GetSubTextToEnd( day, 7 ) + 1
day = Text.GetSubText( day, 1, 6 )
If( Text.GetLength( date ) = 1 )Then
date = Text.Append( "0" , date )
EndIf
day = Text.Append( day , date )

EndFor

TextWindow.WriteLine( "end" )
EndSub

'get html & write file
'IN : URL
'OUT : ---
Sub getBangumi
gb_bangumi = Stack.PopValue( "getbangumi" )

For gb_i = 1 To 30
gb_web[gb_i] = Network.GetWebPageContents( gb_bangumi + gb_i )
While( Text.IsSubText( gb_web[gb_i], "title_bangumi" ))

Stack.PushValue( "getTitle", gb_web[gb_i] )
getTitle()
gb_web[gb_i] = Stack.PopValue( "getTitle" ) 'web HTML
gb_text = Stack.PopValue( "getTitle" ) 'text
gb_date = Stack.PopValue( "getTitle" ) 'date,time,ch
gb_title = Stack.PopValue( "getTitle" ) 'title

TextWindow.WriteLine( gb_date + HT + gb_title + HT + HT + gb_text )
File.AppendContents( fp, gb_date + HT + gb_title + HT + HT + gb_text )
' TextWindow.WriteLine( Text.GetSubText( web[1], 1, 100 ))
EndWhile
TextWindow.WriteLine( CRLF + "---------- Page : " + gb_i + "---------- " + CRLF )
File.AppendContents( fp, CRLF + "---------- Page : " + gb_i + "---------- " + CRLF )

If( Text.IsSubText( gb_web[gb_i], "next disabled" ) Or Text.IsSubText( gb_web[gb_i], PAGER ) = "False" )Then
Goto break
endIf
Endfor

break:
EndSub

'remove html_tag
'IN : web HTML
'OUT : 1=HTML 2=date,time,ch 3=title, 4=text
Sub getTitle
gt_web = Stack.PopValue( "getTitle" )

gt_web = Text.GetSubTextToEnd( gt_web, Text.GetIndexOf( gt_web, "title_bangumi" )+15 )
gt_stPos = Text.GetIndexOf( gt_web, ">" )+1
gt_edPos = Text.GetIndexOf( gt_web, "</p>" )
If( gt_stPos > gt_edPos )Then
gt_stPos =1
EndIf
gt_len = gt_edPos - gt_stPos
Stack.PushValue( "getTitle", Text.GetSubText( gt_web, gt_stPos, gt_len ) )

gt_web = Text.GetSubTextToEnd( gt_web, Text.GetIndexOf( gt_web, "time_bangumi" ) )
gt_stPos = Text.GetIndexOf( gt_web, ">" )+1
gt_edPos = Text.GetIndexOf( gt_web, "<br" )
gt_len = gt_edPos - gt_stPos
gt_date = Text.GetSubText( gt_web, gt_stPos, gt_len ) 'date

gt_stPos = Text.GetIndexOf( gt_web, "<br" )+6
gt_edPos = Text.GetIndexOf( gt_web, "</p>" )
gt_len = gt_edPos - gt_stPos
gt_time = Text.GetSubText( gt_web, gt_stPos, gt_len ) 'time,ch
Stack.PushValue( "getTitle", gt_date + HT + gt_time + " " )

gt_web = Text.GetSubTextToEnd( gt_web, Text.GetIndexOf( gt_web, TXT )-2 )
gt_stPos = Text.GetIndexOf( gt_web, TXT )+16
gt_edPos = Text.GetIndexOf( gt_web, "</p>" )
gt_len = gt_edPos - gt_stPos
gt_text = Text.GetSubText( gt_web, gt_stPos, gt_len ) 'text
Stack.PushValue( "getTitle", gt_text )

Stack.PushValue( "getTitle", gt_web )
EndSub

'get today
'IN : ---
'OUT : date(YYYYMMDD)
Sub today
today_d = Clock.Date
today_day = Text.GetSubText( today_d, 1, 4 ) 'YYYY
today_day = Text.Append( today_day, Text.GetSubText( today_d, 6, 2 ) ) 'MM
today_day = Text.Append( today_day, Text.GetSubText( today_d, 9, 2 ) ) 'DD
TextWindow.Write( "YYYYMMDD(" + today_day + ")" )
today_d = TextWindow.ReadNumber()
If( today_d <> 0 ) Then
today_day = today_d
EndIf
Stack.PushValue( "today", today_day )
EndSub

'set global
Sub init
CRLF = Text.GetCharacter(13) + Text.GetCharacter(10)
HT = Text.GetCharacter(9)
DQ = Text.GetCharacter(34) 'double quatation
PAGER = "class=" + DQ + "pager" + DQ
TXT = "<p class=" + DQ +"text" + DQ + ">"
EndSub

アニメ番組表取得ソフト

最近、SmallBASICをいじりはじめました。
その名の通り、実にsmallなBASIC言語なんですけど、ランタイム(?)を使用した実行ファイルも作れるので、ちょっとした小物ソフトを作るにはいいんじゃないかと思います。

と言うことで、アニメ番組表の取得用ソフトを作ってみました。

これまでアニメ番組の取得に、TVガイドのページを使っていたのですが、昨年10月のリニューアル以後、番組表が無くなってしまいました。

代わりに使用しているのが、ザテレビジョンのページなんですが、ここが少々使いにくくて。
と言うのも、画像が多いうえに、1ページに表示される項目が少ないので、何ページも見なくちゃならない。

そこで勉強がてらSmallBASICで作ってみようかと。
機能は、「thetvのアニメ番組表を取得し、『日付・放送局・番組名・内容』の順にテキストファイルに出力する」というモノ。
「こんなソフト使うヒトいるんか?」というぐらいピンポイントを狙ったソフトです。
つか、俺用。

実行形式はこちら(thetv_anime.zip)

ソースリストは以下ね。
どうせ読む人いないでしょうから小文字にしておきます。

ソースリストについて、一応 言い訳 説明すると、SmallBASICはローカル変数が使えないので、サブルーチンの呼び出しの際、変数の受け渡しにスタックを利用。
また変数の命名規則として、
  1. メインルーチン内の変数は命名規則無し
  2. サブルーチンについては短縮したサブルーチン名を変数の頭に付けてローカル変数という事を明示
  3. グローバル変数は全て大文字
とりあえずそんな感じで作ってみました。

とりあえず本日現在、正常動作してます。
thetvがタグ変えたら動かなくなります。

ちなみに動作は首都圏版のみ。
他の地域はjavascriptで切り替えているので読めません。
あしからず。




main()
Program.End()

Sub main
init()

today()
day = Stack.PopValue( "today" )
TextWindow.WriteLine( day )

fp = "thetv.txt"
File.WriteContents( fp, "" )

File.AppendContents( fp, "アニメ" + CRLF )
anime = "http://thetv.jp/program/schedule/list/anime/terrestrial/" + day + "/page:"
Stack.PushValue( "getbangumi", anime )
getBangumi()

'http://thetv.jp/program/schedule/list/drama/terrestrial/
'http://thetv.jp/program/schedule/list/variety/terrestrial/
'http://thetv.jp/program/schedule/list/movie/terrestrial/
'http://thetv.jp/program/schedule/list/sports/terrestrial/
'http://thetv.jp/program/schedule/list/documentary/terrestrial/
'http://thetv.jp/program/schedule/list/other/terrestrial/

TextWindow.WriteLine( "end" )
EndSub

'get html & write file
'IN : URL
'OUT : ---
Sub getBangumi
gb_bangumi = Stack.PopValue( "getbangumi" )

For gb_i = 1 To 30
gb_web[gb_i] = Network.GetWebPageContents( gb_bangumi + gb_i )
While( Text.IsSubText( gb_web[gb_i], "title_bangumi" ))

Stack.PushValue( "getTitle", gb_web[gb_i] )
getTitle()
gb_web[gb_i] = Stack.PopValue( "getTitle" ) 'web HTML
gb_text = Stack.PopValue( "getTitle" ) 'text
gb_date = Stack.PopValue( "getTitle" ) 'date,time,ch
gb_title = Stack.PopValue( "getTitle" ) 'title

TextWindow.WriteLine( gb_date + HT + gb_title + HT + HT + gb_text )
File.AppendContents( fp, gb_date + HT + gb_title + HT + HT + gb_text )
' TextWindow.WriteLine( Text.GetSubText( web[1], 1, 100 ))
EndWhile
TextWindow.WriteLine( CRLF + "---------- Page : " + gb_i + "---------- " + CRLF )
File.AppendContents( fp, CRLF + "---------- Page : " + gb_i + "---------- " + CRLF )

If( Text.IsSubText( gb_web[gb_i], "next disabled" ) Or Text.IsSubText( gb_web[gb_i], PAGER ) = "False" )Then
Goto break
endIf
Endfor

break:
EndSub

'remove html_tag
'IN : web HTML
'OUT : 1=HTML 2=date,time,ch 3=title, 4=text
Sub getTitle
gt_web = Stack.PopValue( "getTitle" )

gt_web = Text.GetSubTextToEnd( gt_web, Text.GetIndexOf( gt_web, "title_bangumi" )+15 )
gt_stPos = Text.GetIndexOf( gt_web, ">" )+1
gt_edPos = Text.GetIndexOf( gt_web, "</p>" )
If( gt_stPos > gt_edPos )Then
gt_stPos =1
EndIf
gt_len = gt_edPos - gt_stPos
Stack.PushValue( "getTitle", Text.GetSubText( gt_web, gt_stPos, gt_len ) )

gt_web = Text.GetSubTextToEnd( gt_web, Text.GetIndexOf( gt_web, "time_bangumi" ) )
gt_stPos = Text.GetIndexOf( gt_web, ">" )+1
gt_edPos = Text.GetIndexOf( gt_web, "<br" )
gt_len = gt_edPos - gt_stPos
gt_date = Text.GetSubText( gt_web, gt_stPos, gt_len ) 'date

gt_stPos = Text.GetIndexOf( gt_web, "<br" )+6
gt_edPos = Text.GetIndexOf( gt_web, "</p>" )
gt_len = gt_edPos - gt_stPos
gt_time = Text.GetSubText( gt_web, gt_stPos, gt_len ) 'time,ch
Stack.PushValue( "getTitle", gt_date + HT + gt_time + " " )

gt_web = Text.GetSubTextToEnd( gt_web, Text.GetIndexOf( gt_web, TXT )-2 )
gt_stPos = Text.GetIndexOf( gt_web, TXT )+16
gt_edPos = Text.GetIndexOf( gt_web, "</p>" )
gt_len = gt_edPos - gt_stPos
gt_text = Text.GetSubText( gt_web, gt_stPos, gt_len ) 'text
Stack.PushValue( "getTitle", gt_text )

Stack.PushValue( "getTitle", gt_web )
EndSub

'get today
'IN : ---
'OUT : date(YYYYMMDD)
Sub today
today_d = Clock.Date
today_day = Text.GetSubText( today_d, 1, 4 ) 'YYYY
today_day = Text.Append( today_day, Text.GetSubText( today_d, 6, 2 ) ) 'MM
today_day = Text.Append( today_day, Text.GetSubText( today_d, 9, 2 ) ) 'DD
TextWindow.Write( "YYYYMMDD(" + today_day + ")" )
today_d = TextWindow.ReadNumber()
If( today_d <> 0 ) Then
today_day = today_d
EndIf
Stack.PushValue( "today", today_day )
EndSub

'set global
Sub init
CRLF = Text.GetCharacter(13) + Text.GetCharacter(10)
HT = Text.GetCharacter(9)
DQ = Text.GetCharacter(34) 'double quatation
PAGER = "class=" + DQ + "pager" + DQ
TXT = "<p class=" + DQ +"text" + DQ + ">"
EndSub


プロフィール

toshi_tagiya

Author:toshi_tagiya
(資)田木屋商店
ソフトウェア開発室


(資)田木屋商店 TopPage
(資)田木屋商店 SoftWare
toshi's page

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。