Techioz Blog

Rocket > BlueZone > EMReadScreen API メソッドがバッファ変数に値を格納しない

概要

BlueZoneソフトウェアが提供するEMReadScreenメソッドを使用して、RUBY langでBluezone画面から値を読み取ろうとしています。ただし、このメソッドはバッファ文字列の値を返しません。 VB スクリプトでは正常に動作しますが、Ruby では正常に動作します。

API ドキュメントへのリンク - https://www3.rocketsoftware.com/bluezone/help/v71/en/bzsh/default.htm#%2Fbluezone%2Fhelp%2Fv71%2Fen%2Fbzsh%2Fbzaa_aref_EMReadScreen.htm

コード:

require 'win32ole'

class Dummy

  @system = WIN32OLE.new('BlueZone.System')
  sleep 2
  sessions = @system.Sessions
  sleep 2
  session = sessions.Open('path')
  sleep 2
  @system.WriteScreen("enter_screen", 18,40 ) # This one is working
  sleep 4
  @system.ReadScreen(@buffer_variable,05,18,40 ) # This line doesnt throw any error but buffer_varailble not storing any value.
  sleep 2
  puts @buffer_variable  # returns nothing, expecting to store "enter"
end

解決策

一部の BlueZone 関数では、使用する前に変数を初期化する必要があります。 ReadScreen を呼び出す前に、 @buffer_variable を空の文字列に設定してみてください。

  sleep 4
  @buffer_variable = ""
  @system.ReadScreen(@buffer_variable,05,18,40 )