豚吐露@wiki

標準関数を使おうとすると型が違うというエラーが出る

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

標準関数を使おうとすると型が違うというエラーが出る

Windows Server 2003
IIS 6.0
Internet Explorer 10.0


VBScriptの仕様らしいが、結構怖い仕様。

例えば、こんなコードを書く。
  1. <% Option Explicit %>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD html 4.01 Transitional//EN">
  3. <html lang="ja">
  4. <head>
  5. <meta http-equiv="Content-Languages" content="ja"/>
  6. <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/>
  7. <title>test</title>
  8. </head>
  9.  
  10. <body>
  11. <%
  12. Function echo(ByVal str)
  13. response.write str & "<br/>" & vbCrLf
  14. End function
  15.  
  16. Dim str : str = "あいうえお"
  17. Dim word : word = mid(str, 2, 2) ' 『いう』が表示される
  18. echo word
  19. %>
  20. </body>
  21. </html>

単純に『いう』という文字が表示されるだけ。

これに16行目の『Dim mid』って宣言を追加してみる。
  1. <% Option Explicit %>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD html 4.01 Transitional//EN">
  3. <html lang="ja">
  4. <head>
  5. <meta http-equiv="Content-Languages" content="ja"/>
  6. <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/>
  7. <title>test</title>
  8. </head>
  9.  
  10. <body>
  11. <%
  12. Function echo(ByVal str)
  13. response.write str & "<br/>" & vbCrLf
  14. End function
  15.  
  16. Dim mid
  17.  
  18. Dim str : str = "あいうえお"
  19. Dim word : word = mid(str, 2, 2) ' 『いう』が表示される
  20. echo word
  21. %>
  22. </body>
  23. </html>
すると、こんなエラーが吐かれるようになっちまった。(´・ω・`)
Microsoft VBScript 実行時エラー エラー '800a000d'

型が一致しません。

/HOGE/test.asp, 行 19
ここだけ見たら当たり前って思うかもしれんけど...
この仕様の怖いところは、『宣言した変数名と関数名がかぶると、include先でも関数が使えなくなる。』ってところ。
要は、共通モジュール作ってる人が、使ってる側の変数宣言のとばっちりを受けて、怒られる可能性があるんですね。(´・ω・`)

今どき流行らんけど、Legacy ASPではハンガリアン記法を使うのが無難なのかも知れん。



更新日: 2013年11月21日 (木) 10時21分09秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー