WITH-ENDWITH

WITH-ENDWITH

モジュール、クラス、COMオブジェクトの表記などのドット構文にて指定部分を省略して表記できる
WITH ドット構文共通部
.変数 = < 値>
.関数()
ENDWITH

・ドット構文共通部・・・ドットで区切られた部分の省略したい箇所
・変数・・・ドットを付けて変数を記述することで呼び出し可能
・関数・・・ドットを付けて関数を記述することで呼び出し可能

何度も同じ表記をするのは面倒くさい時に

上級者編で述べているCOMオブジェクトなどはドットで区切られた構文を多様します。
理解が進むと、段々感じてくると思いますが、
記述内容の繰り返しが多く出てきます。
まとめて同じドット以下に処理をしたい場合はWITH-ENDWITHを使いましょう。
以下、簡単な使い方です。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://www.yahoo.co.jp")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

WITH IE.document
  .TITLE = "やっほー"
ENDWITH

必要に応じて使おう

上の例ですと、ブラウザがアクセスしたページのタイトルだけ変えています。
こういう場合は大した威力は発揮できませんが、
数が多い場合には是非とも活用して下さい。
次に、MODULE-ENDMODULE、CLASS-ENDCLASSで説明した
サンプルスクリプトを WITH-ENDWITHで呼び出してみましょう。
以下のようになります。

この投稿の続きを読む »

タグ

2012年9月16日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

MODULE-ENDMODULE、CLASS-ENDCLASS

MODULE-ENDMODULE、CLASS-ENDCLASS

モジュール化、クラス化して、スクリプトを意味のあるグループにまとめます
MODULE
  CONST 変数
  PUBLIC 変数
  DIM 変数
  PROCEDURE モジュール名
  PROCEDURE 関数名()
  FUNCTION 関数名()
ENDMODULE
または・・・
CLASS
  CONST 変数
  PUBLIC 変数
  DIM 変数
  PROCEDURE クラス名
  PROCEDURE 関数名()
  FUNCTION 関数名()
ENDCLASS
MODULEもCLASSも同義

・CONST 変数・・・名前.変数名で外部からアクセス可
・PUBLIC 変数・・・名前.変数名で外部からアクセス可
・DIM 変数・・・外部からアクセス不可
・PROCEDURE モジュール名/クラス名・・・コンストラクタ
・PROCEDURE 関数名()
・FUNCTION 関数名()

変数、関数をセットにした1つのグループを定義する際に使用

例えば、HUMANというオブジェクトがあったとします。
このオブジェクトには、NAMEという変えられない定数、
FEELINGという変数、そしてSPEAKという関数や
WALKという関数が備わっているとします。
これらの定数、変数、関数をバラバラに定義することも可能ですが、
HUMANというオブジェクトの中に収め、意味のあるグループで
まとめるたほうがよい場合が多々あります。
※メンテナンスがしやすい
※スクリプトの可読性が高まる
※変更してよい変数、してはいけない変数が明確になり、改修や影響調査がしやすい
などなど
もしオブジェクト指向という情報技術の一分野を学ぶ際には、
こういった考え方を知っておくのは大変役に立つでしょう。
まずは上のHUMANというオブジェクトを組み立ててみましょう。

//まずは喋らせてみる
MSGBOX(HUMAN.SPEAK())

//気分を変えてみる
HUMAN.FEELING = "I feel so bad"

//もう一度喋らせてみる
MSGBOX(HUMAN.SPEAK())

//歩かせて見ます
HUMAN.WALK()
//もう一度歩かせて見ます
HUMAN.WALK()
//もう一度歩かせて見ます
HUMAN.WALK()
//もう一度歩かせて見ます
HUMAN.WALK()

//MODULE-ENDMODULEとしてもよい
CLASS HUMAN
 CONST NAME = "John"
 PUBLIC FEELING = "I'm Happy"
 DIM STEPS
 PROCEDURE HUMAN()
  THIS.STEPS = 10
 FEND 
 FUNCTION SPEAK()
  RESULT = "My name is " + THIS.NAME + " " + THIS.FEELING
 FEND
 PROCEDURE WALK()
  THIS.STEPS = THIS.STEPS + 1
  PRINT THIS.STEPS + "歩目を踏み出しました"
 FEND
ENDCLASS

使い方

たとえば、汎用的な作業を別ファイルに書き出すとします。
UWSCではCALLを使うことで、
外部スクリプトを呼び出せますので、
よくある処理をまとめておけば、再度開発する手間が省けます。
こういう場合に、同じ名前の変数(関数)を使った/作ってしまった、
というケースは割とあります。
また、変数や関数が意味もなく、羅列してあるので収集がつかなくなったり
スクリプトのメンテナンス性が著しく悪くなってしまったりするケースもあります。
こういう場合にMODULEやCLASSを導入することで、
名前の被り(MODULE名やCLASS名が異なれば、内部の変数は被っても大丈夫)
意味のない関数、変数の乱雑さを抑止することができます。
下記のスクリプトは先ほどのスクリプトに一つ一つコメントを入れたものです。
導入する際のメリットになれば幸いです。

この投稿の続きを読む »

タグ

2012年9月15日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

IE.document.imagesから取得できる画像の情報

IE.document.imagesから画像の情報取得が行えます

ページ内画像数
画像数
IE.document.images.length
画像のオブジェクト(0からの数値を指定)
画像ファイル名
IE.document.images[0].nameProp
画像URL
IE.document.images[0].src
プロトコル
IE.document.images[0].protocol
ページ内タグ位置
IE.document.images[0].sourceIndex
ALT属性
IE.document.images[0].alt
TITLE属性
IE.document.images[0].title
枠線
IE.document.images[0].border
class
IE.document.images[0].class
id
IE.document.images[0].id
name
IE.document.images[0].name
ユニークID
IE.document.images[0].uniqueID
高さ
IE.document.images[0].height
横幅
IE.document.images[0].width
読込完了
IE.document.images[0].complete

というわけで、
具体的にスクリプトを実行させて、結果を見てみましょう。
実行時のイメージ動画は下記の通りです。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0003/")

REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

PRINT "■ページ内画像総数:" + IE.document.images.length
FOR A = 0 TO (IE.document.images.length-1)
 PRINT "  ▼画像" + (A+1)
 PRINT "  画像ファイル名:" + IE.document.images[A].nameProp
 PRINT "  画像URL:" + IE.document.images[A].src
 PRINT "  プロトコル:" + IE.document.images[A].protocol
 PRINT "  ページ内タグ位置:" + IE.document.images[A].sourceIndex
 PRINT "  ALT属性:" + IE.document.images[A].alt
 PRINT "  TITLE属性:" + IE.document.images[A].title
 PRINT "  枠線:" + IE.document.images[A].border
 PRINT "  class:" + IE.document.images[A].className
 PRINT "  id:" + IE.document.images[A].id
 PRINT "  name:" + IE.document.images[A].name
 PRINT "  ユニークID:" + IE.document.images[A].uniqueID
 PRINT "  高さ:" + IE.document.images[A].height
 PRINT "  横幅:" + IE.document.images[A].width
 PRINT "  読込状況:" + IE.document.images[A].complete
 PRINT "  -----"
NEXT

指定画像が出てきたらメッセージを出す

それでは、画像オブジェクトの情報を読み込みながら、条件分岐をして見ましょう。
ページにアクセスしていき、指定画像が出現したらメッセージを出します。
スクリプトは以下の通りです。
実行時のイメージ動画は下記の通りです。

この投稿の続きを読む »

タグ

2012年7月22日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

このページの先頭へ