豚吐露@wiki
標準関数を使おうとすると型が違うというエラーが出る
最終更新:
Bot(ページ名リンク)
-
view
標準関数を使おうとすると型が違うというエラーが出る
VBScriptの仕様らしいが、結構怖い仕様。
例えば、こんなコードを書く。
- <% Option Explicit %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD html 4.01 Transitional//EN">
- <html lang="ja">
- <head>
- <meta http-equiv="Content-Languages" content="ja"/>
- <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/>
- <title>test</title>
- </head>
-
- <body>
- <%
- Function echo(ByVal str)
- response.write str & "<br/>" & vbCrLf
- End function
-
- Dim str : str = "あいうえお"
- Dim word : word = mid(str, 2, 2) ' 『いう』が表示される
- echo word
- %>
- </body>
- </html>
単純に『いう』という文字が表示されるだけ。
これに16行目の『Dim mid』って宣言を追加してみる。
- <% Option Explicit %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD html 4.01 Transitional//EN">
- <html lang="ja">
- <head>
- <meta http-equiv="Content-Languages" content="ja"/>
- <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"/>
- <title>test</title>
- </head>
-
- <body>
- <%
- Function echo(ByVal str)
- response.write str & "<br/>" & vbCrLf
- End function
-
- Dim mid
-
- Dim str : str = "あいうえお"
- Dim word : word = mid(str, 2, 2) ' 『いう』が表示される
- echo word
- %>
- </body>
- </html>
すると、こんなエラーが吐かれるようになっちまった。(´・ω・`)
Microsoft VBScript 実行時エラー エラー '800a000d' 型が一致しません。 /HOGE/test.asp, 行 19 |
ここだけ見たら当たり前って思うかもしれんけど...
この仕様の怖いところは、『宣言した変数名と関数名がかぶると、include先でも関数が使えなくなる。』ってところ。
要は、共通モジュール作ってる人が、使ってる側の変数宣言のとばっちりを受けて、怒られる可能性があるんですね。(´・ω・`)
この仕様の怖いところは、『宣言した変数名と関数名がかぶると、include先でも関数が使えなくなる。』ってところ。
要は、共通モジュール作ってる人が、使ってる側の変数宣言のとばっちりを受けて、怒られる可能性があるんですね。(´・ω・`)
今どき流行らんけど、Legacy ASPではハンガリアン記法を使うのが無難なのかも知れん。
更新日: 2013年11月21日 (木) 10時21分09秒