VS2003.NETで開発中です。

「名前'imgMap'は宣言されていません。」というビルドエラーがimgMapの箇所で発生します。
しかし、サンプルコードやテキストには、どこにも宣言らしきものが必要とは書かれていないのですが、どのような宣言が必要なのでしょうか?
ご教授いただけると助かります。

-----------------------------
  ・
  ・
  ・
For Each oRowUSER In oDSUSER.Tables("USER").Rows
 imgMap.Add(CStr(oRowUSER("USER")).Trim, System.Drawing.Bitmap.FromFile("..\images\" & CStr(oRowUSER("USER")).Trim & ".gif"))
Next
  ・
  ・
  ・
-----------------------------

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ソースコードを見る限り"imgMap"はオブジェクト変数ですから、「必要」と書かれていなくても宣言は必要です。



(1)Dim imgMap As New ○○○
とか
(2)Dim imgMap As ○○○
Set imgMap = New ○○○
のような記述が必要となります。(○○○にはオブジェクト名が入ります。)また、プロジェクトの設定としてアーリーバインディングも必要かと思われます。

どのようなオブジェクトを使用されているのかが分からないので、申し上げられるのはここまでです。

この回答への補足

自己解決しました。
ImageMapについてヘルプなどを調べまくっていたら、下の記述をしている解説を見つけたので、試しにこの宣言をしてみたところ、解決しました。
サンプルコードの書籍の印刷ミスか説明省略だったのかもしれません。
ありがとうございました。

Dim imgMap As New Hashtable

補足日時:2005/04/23 15:27
    • good
    • 0
この回答へのお礼

(1)や(2)のように、変数を宣言してみてはいたのですが、○○○部分をいろいろ変えてみても、やはり変わらず・・・

例えばですが、Dim imgMap As New Bitmapと宣言してみると、
Dim imgMap As New BitmapのimgMapのところで、
「この引数の数を受け付ける'New'がないため、オーバーロードの解決に失敗しました。」
のビルドエラーが
imgMap.Addのところでは、
「'Add'は'System.Drawing.Bitmap'のメンバではありません。」
のビルドエラーが出ました。

プロジェクトの設定としてアーリーバインディングとは、どのようなものでしょうか?
ちょっと検索して調べてはいますが、まだ理解に至ってなくて・・

でもご回答いただき、ありがとうございました。

お礼日時:2005/04/23 14:00

最近、似たような質問があったようです。



参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1337754

この回答への補足

自己解決しました。
ImageMapについてヘルプなどを調べまくっていたら、下の記述をしている解説を見つけたので、試しにこの宣言をしてみたところ、解決しました。
サンプルコードの書籍の印刷ミスか説明省略だったのかもしれません。
ありがとうございました。

Dim imgMap As New Hashtable

補足日時:2005/04/23 15:24
    • good
    • 0
この回答へのお礼

ありがとうございます。
この質問は私が過去にしたものです。
今回のエラーは、この質問の内容とは違うものです。

お礼日時:2005/04/23 13:08

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAndroid / AsyncTaskの第1引数

■コード
Hoge hoge = new Hoge();
hoge.execute();

public class Hoge extends AsyncTask<Object, 第2引数, 第3引数> {

 protected List<Piyo> doInBackground(Object... params) {


■質問1
・executeで引数を渡していないに、なぜ引数を受け取れるのでしょうか?
(doInBackgroundメソッド引数として受け取っているで合っている?)
・処理の流れ的には、executeで渡した引数がdoInBackgroundメソッド引数となり、その型をAsyncTask第1引数で指定している?
・それとも、executeで渡す引数の型をAsyncTask第1引数で指定しているから、予め指定された型のみをdoInBackgroundメソッド引数として受け取れる?


■質問2
・リンク先に、下記主旨の記述があるのですが、「自分で好きに型を選択できる」とはどういう意味なのでしょうか?
>冒頭の型変数のParamsはdoInBackgroundメソッドの引数で、自分で好きに型を選択できる
>execute()メソッドの引数に渡されたものがこのdoInBackgroundのparamsとして渡ってくる
・paramsとして渡された型を、AsyncTask第1引数で宣言することで自由に変更できる?
・それとも、AsyncTask第1引数で指定することで、doInBackgroundのparamsとして渡されてくる型を制限(指定)できる?
http://d.hatena.ne.jp/Nagise/20120309/1331265123

■コード
Hoge hoge = new Hoge();
hoge.execute();

public class Hoge extends AsyncTask<Object, 第2引数, 第3引数> {

 protected List<Piyo> doInBackground(Object... params) {


■質問1
・executeで引数を渡していないに、なぜ引数を受け取れるのでしょうか?
(doInBackgroundメソッド引数として受け取っているで合っている?)
・処理の流れ的には、executeで渡した引数がdoInBackgroundメソッド引数となり、その型をAsyncTask第1引数で指定している?
・それとも、executeで渡す引数の型をAsyncTask第1引...続きを読む

Aベストアンサー

こんにちは
>executeで引数を渡していないに
executeの引数は可変長です。
つまり、引数なしでもいいですし、1個でも2個でも3個でもOKです。
http://developer.android.com/reference/android/os/AsyncTask.html
同様に、doInBackgroundの引数も可変長です。
つまり、executeで渡された引数と同じものが、そのままdoInBackgroundに渡される仕組みです。
ですから、
hoge.execute();
とした場合は、引数はありませんから、doInBackgroundでも何も受け取れません。

>・リンク先に、下記主旨の記述があるのですが、「自分で好きに型を選択できる」とはどういう意味なのでしょうか?
>・paramsとして渡された型を、AsyncTask第1引数で宣言することで自由に変更できる?
>・それとも、AsyncTask第1引数で指定することで、doInBackgroundのparamsとして渡されてくる型を制限(指定)できる?
どちらも違います。
「executeの引数として、好きな型を使用できる」ということですね。
もちろん、doInBackgroundで受け取れる型も同じ型になります。勝手に変更されたりはしません。
どんな型を使用するのかはクラスの定義時に指定します。質問者さんが、「AsyncTask第1引数」とおっしゃっている場所ですね。
正式には、引数ではないので、「第一引数」とは呼びません。
「ジェネリック」で調べると、いろいろ詳しいことがわかると思います。

こんにちは
>executeで引数を渡していないに
executeの引数は可変長です。
つまり、引数なしでもいいですし、1個でも2個でも3個でもOKです。
http://developer.android.com/reference/android/os/AsyncTask.html
同様に、doInBackgroundの引数も可変長です。
つまり、executeで渡された引数と同じものが、そのままdoInBackgroundに渡される仕組みです。
ですから、
hoge.execute();
とした場合は、引数はありませんから、doInBackgroundでも何も受け取れません。

>・リンク先に、下記主旨の記述があるのです...続きを読む

Qbitmapの宣言

こんばんわ。
bitmapの宣言を最初に行い、途中のサブルーチン内で大きさの変更を行いたいのですが、可能でしょうか?

Public Class Form1
Dim BMP As New Bitmap(300, 200)
Private Sub
このなかで、300*200の指定を行いたいです。
End Sub

ちなみに、

Public Class Form1
Dim BMP As Bitmap
Private Sub
BMP = New Bitmap(300, 200)
End Sub

などと悪あがきをしましたがダメでした。
良い解決策を教えてください。よろしくお願いします。
バージョンは、.NET 2005です。

Aベストアンサー

お世話になります。

えっ?普通に出来ますよね?
Public Class TestForm
  Private m_bmp As Bitmap

  Private Sub test()
    Me.m_bmp = New Bitmap(300, 200)
  End Sub
End Class

> ダメでした。
何がダメだったのか補足していただけないでしょうか。

参考URL:http://msdn2.microsoft.com/ja-jp/library/system.drawing.bitmap.aspx

Q/proc/sys/net/ipv4/route/flushは無効な引数?

/proc/sys/net/ipv4/route/flush
というファイルをcatの引数に指定すると
「無効な引数です」と言われます。
普通、読めないファイルの場合は
「許可がありません」というメッセージなのに、
このファイルだけは「無効な引数です」と言われるのです。
エラーメッセージが異なるということは別のエラーということだと思うのですが、
「無効な引数です」というメッセージはどのような場合に表示されるものなのですか。

たとえばwcの引数に指定した場合、次のようにエラーメッセージと通常の結果の両方を表示します。
$ wc /proc/sys/net/ipv4/route/flush
wc: /proc/sys/net/ipv4/route/flush: 無効な引数です
0 0 0 /proc/sys/net/ipv4/route/flush

ですのでエラーメッセージをリダイレクトしてしまえば、何の問題もないように思えるのですが・・・
これでいいのかなぁ。

Aベストアンサー

Linux で /proc 以下のファイルは特殊なファイルです。/proc以下のファイルは、カーネルとのインターフェイスになっていて、ファイルとしての実体はありません(man 5 proc 参照)。カーネルの中に、/proc 以下のこのディレクトリにアクセスがあったら、こういう値を出力する(読み込みの場合)、その値をカーネルのこの変数に代入する(書き込みの場合)というようなプログラムが書かれています。

ということで、属性が変更できないのは当然です。ちなみに CentOS 4.4 では

$ ls -l /proc/sys/net/ipv4/route/flush
--w------- 1 root root 0 Nov 21 10:39 /proc/sys/net/ipv4/route/flush

となっています。これを

$ strace wc /proc/sys/net/ipv4/route/flush

とするとどこで、どういうエラーになったか分かります。CentOSの場合、沢山の出力の後、

....
open("/proc/sys/net/ipv4/route/flush", O_RDONLY|O_LARGEFILE) = -1 EACCES (Permission denied)
write(2, "wc:
....

となります。まあ、これはrootでないので当然の結果ですが。

Linux で /proc 以下のファイルは特殊なファイルです。/proc以下のファイルは、カーネルとのインターフェイスになっていて、ファイルとしての実体はありません(man 5 proc 参照)。カーネルの中に、/proc 以下のこのディレクトリにアクセスがあったら、こういう値を出力する(読み込みの場合)、その値をカーネルのこの変数に代入する(書き込みの場合)というようなプログラムが書かれています。

ということで、属性が変更できないのは当然です。ちなみに CentOS 4.4 では

$ ls -l /proc/sys/net/ipv4/rou...続きを読む

QBitmap.GetPixelより高速なもの

いまVBでBitmap.GetPixelを使って、グレースケールの画像のRGBを取得しています。
まあグレースケールなんでRGB同じなのでとりあえずRの値を使うとして、
200*300の画像をFor文でBitmap.GetPixelを使うととてもじゃないぐらい遅いです。
ある程度調べると、LockBits()というものが見つかったのですが使い方がわかりません。 教えてください。

Aベストアンサー

補足されたコードをもう一度見直したほうがいいように思います

for LY ...
 for LX ...
  myBitmapの構築
  色情報の取得
  if 色判定 then
   Graphicsオブジェクトの生成
   描画
  end if
 next ' LX
next ' LY
といった構成になっています

2重ループの内側で myBitmapを毎回作成するのは無駄です
Graphicsオブジェクトの生成もループの内側でやった場合
連続して判定がTrueを返した場合毎回生成しなおします

変化しないものはループの外へ追い出して見ましょう

' Create a Bitmap object from an image file.
Dim myBitmap As New Bitmap(".\Test01.jpg")
Dim P As Graphics = PictureBox2.CreateGraphics

Dim LY As Long
' イメージ全体で行うなら 299をmyBitmap.Heightに
' 199を myBuitmp.Widthに変更したほうがいいでしょう
' 1行おきの処理なら Stepで調整する
For LY = 0 To 299 Step 2
  Dim LX As Long
  For LX = 0 To 199
    Try
      ' Get the color of a pixel within myBitmap.
      Dim pixelColor As Color = myBitmap.GetPixel(LX, LY)
      Red = pixelColor.R
      Label1.Text = "R" + Red
      If (Red > 40) Then
        P.FillRectangle(Brushes.White, LX, LY, 1, 1)
      End If
    Catch ex As Exception
    End Try
  Next
  ' 1行おきの処理をしたいのであれば For文にStepをつけましょう
  ' Forなど自動でカウントアップ(またはダウン)するものを
  ' コード内でいじってしまうのはあまり行儀がよくありません
  ' LY = LY + 1
Next

といった具合で 速度がずいぶん改善されるように思います

補足されたコードをもう一度見直したほうがいいように思います

for LY ...
 for LX ...
  myBitmapの構築
  色情報の取得
  if 色判定 then
   Graphicsオブジェクトの生成
   描画
  end if
 next ' LX
next ' LY
といった構成になっています

2重ループの内側で myBitmapを毎回作成するのは無駄です
Graphicsオブジェクトの生成もループの内側でやった場合
連続して判定がTrueを返した場合毎回生成しなおします

変化しないものはループの外へ追い出して見ましょう

' Cre...続きを読む

QPL/pgSQL 引数の数

PL/pgSQL を使用し更新処理を行いたいのですが、
パラメータの数が多すぎるのか
以下のエラーでデータベースにファンクションを定義出来ません。
ERROR: functions cannot have more than 100 arguments
SQLステート:54023

可変長引数で作成すると、データベースに定義は出来るのですが
ファンクション実行時に同様のエラーが発生し更新処理が行えません。

PL/pgSQL の引数を100以上使用出来る様にする設定等、存在するのであれば
教えて頂きたいです。

環境は以下の内容です。
CentOS-6.2-x86_64
Apache/2.2.15
PostgreSQL 9.1.3
PHP Version 5.3.3 (PDOを使用しています)

Aベストアンサー

100 以上の引数をもった関数を定義できるようにするには、ソースコードを修正してコンパイルしなおす必要があります。

ヘッダファイル src/include/pg_config_manual.h 内の定数 FUNC_MAX_ARGS を修正してください。ソースコードのコメントには約 600 まで増やせるということです。

100 以上の引数をもつ関数を定義すること自体、設計に何らかの問題がありそうなので、そちらを見なおしたほうがよいと思います。

あるいは、引数を配列や複合型で渡すことを考えたほうがいいかもしれません。

Q変数宣言(Dim)と定数宣言(Const)のメモリ使用量

VS2005で開発しています。
Constで定数宣言したものはソース上でカーソルを当てるとその場で内容を確認できますが、変数で宣言しておくことでメモリ使用量が少なくなると言われました。
そうするといちいち定義まで飛ばないと定数の中身が見れず不便に思っているのですが、本当にメモリ使用量が少なくなるのでしょうか?

Aベストアンサー

・Constはコンパイルしたときに消えるので、そもそもメモリを使っていない。

  Const A As Integer = 1
  Dim B As Integer = A

  コンパイルすると

  Dim B as Interger = 1

変数にするとメモリを使うので、むしろメモリ使用量が増える。

だだし、文字列を複数回使う場合は、Constより変数がいいかな。

  Const C As String = "***************************************************************"
  Dim D As String = C
  Dim E As String = D

  コンパイルすると

Dim D As String = "***************************************************************"
Dim E As String = "***************************************************************"

・Constはコンパイルしたときに消えるので、そもそもメモリを使っていない。

  Const A As Integer = 1
  Dim B As Integer = A

  コンパイルすると

  Dim B as Interger = 1

変数にするとメモリを使うので、むしろメモリ使用量が増える。

だだし、文字列を複数回使う場合は、Constより変数がいいかな。

  Const C As String = "***************************************************************"
  Dim D As String = C
  Dim E As String = D

  コンパイルすると

...続きを読む

QObjective-CのNSTaskの引数に全角/半角スペース及び日本

Objective-CのNSTaskの引数に全角/半角スペース及び日本語を含むパスが指定された場合に正常に処理が行えません。
どのように引数をしていすればいいのか、教えていただきたく投稿させていただきます。

実行するアプリはAutomatorで作成したアプリの為、openコマンドに引数-aを指定しています。

NSTask *tast = [[NSTask alloc]init];
NSString *Command = [NSStrign stringWithFormat:@"/usr/bin/open"];
NSArray *arguments = [NSArray arrayWithObjects:@"-a",
[NSMutableString stringWithFormat:@"%@",アプリのパス],
[NSMutableString strignWithFormat:@"%@",ファイルのパス],
nil];
[task setLaunchPath:Commadn];
[task setArguments:arguments];
[task launch];
[task waitUntilExit];
[task release];

引数配列のargumentsを途中で出力した場合にスペース部がバックスラッシュでエスケープ、日本語はエンコード?されていました。
ダブルクォーテーションで囲んでみたのですが、ダメでした。

どなたか、お分かりなられる方おられましたら、ご教授の程宜しくお願いします。

Objective-CのNSTaskの引数に全角/半角スペース及び日本語を含むパスが指定された場合に正常に処理が行えません。
どのように引数をしていすればいいのか、教えていただきたく投稿させていただきます。

実行するアプリはAutomatorで作成したアプリの為、openコマンドに引数-aを指定しています。

NSTask *tast = [[NSTask alloc]init];
NSString *Command = [NSStrign stringWithFormat:@"/usr/bin/open"];
NSArray *arguments = [NSArray arrayWithObjects:@"-a",
[NSMutableString stringWithFormat:@"%@",アプ...続きを読む

Aベストアンサー

こんちは。
NSTaskは使った事無いのですが、ファイルパス名をURLで指定してみてはいかがでしょう?

NSTaskはFoundationフレームワークのクラスなので、ファイルやディレクトリの場所は、
ファイルパス名/URLどちらでも指定できると思います。

で、URLはスペースや英数字以外の文字は使用できないので、UTF-8でテキストエンコーディングします。
NSStringクラスには、stringWithUTF8Stringみたいなエンコードメソッドが多数あるので試してみては?

Q変数の宣言はすべきでしょうか?宣言することの功罪について教えて下さい。

変数の宣言はすべきでしょうか?宣言することの功罪について教えて下さい。
また、宣言するべきというアドバイスの場合、どのように宣言するのがスマートでしょうか。
みなさんのご意見をお聞かせ下さい。

Aベストアンサー

書き込みがあったので追加で。

具体的な位置はなるべく範囲をせまくすることを目指すべきです。
グローバルな変数よりも、モジュール(またはクラス)レベルの変数、
モジュールレベルよりもプロシージャ(メソッド)レベルの変数、
さらにそれよりもUsingやTry、Forなどの中で、
という風にブロックレベルを目指すことになります。

VB6.0の頃はUsingなどがなかったので
プロシージャの途中で宣言すると変数を把握しにくくなるということで
プロシージャレベルまでいったらプロシージャの先頭に
まとめることが多かったです。

しかしVB.NETではJavaなどと同様に
使う直前に宣言して、使用したら即破棄するという方法が
やりやすくなったので、最近ではこちらのほうがいいでしょう。

あとVBでは下記のように変数宣言は縦に並べるほうがオススメです。
(グローバル、モジュール、プロシージャレベルの場合です。)

Dim test_var as string
DIM test2_var as byte

1行ごとにコメントにできたり、型の宣言なども見やすくなります。
変数が多い場合にExcelやテキストエディタを使った編集がしやすかったりもします。
あとは自分以外の人がみることを考えると分けたほうが把握しやすいでしょう。

ただし言語によっては1行に詰めて書くのを好む場合もあります。

最後に参考URLです。
第 6 回 様々な変数宣言 ~バージョン アップに伴う変化~
http://msdn.microsoft.com/ja-jp/ff384144.aspx

参考URL:http://msdn.microsoft.com/ja-jp/ff384144.aspx

書き込みがあったので追加で。

具体的な位置はなるべく範囲をせまくすることを目指すべきです。
グローバルな変数よりも、モジュール(またはクラス)レベルの変数、
モジュールレベルよりもプロシージャ(メソッド)レベルの変数、
さらにそれよりもUsingやTry、Forなどの中で、
という風にブロックレベルを目指すことになります。

VB6.0の頃はUsingなどがなかったので
プロシージャの途中で宣言すると変数を把握しにくくなるということで
プロシージャレベルまでいったらプロシージャの先頭に
まとめることが...続きを読む

QPL/SQLのFUNCTIONにおける引数について

PL/SQLで、FUNCTIONを作成しています。
そのFUNCTIONの引数に
StringList型の配列を受け取りたいのですが、
どのように書いたらよろしいのでしょうか?

申し訳ありませんが、教えて下さい。

Aベストアンサー

こんにちは。

>>StringList型の配列を受け取りたいのですが
何から?

FUNCTIONの引数にPL/SQL表などを使用するのなら、Packageにしてヘッダー部で型を宣言しないと・・・。

Q配列をループでたくさん宣言したいのですが、配列名や変数名を変数で宣言することはできませんか?

お世話になっております。
タイトル通りの質問です。

日付がファイル名になっているCSVファイルが複数あるのですが、
それをそのまま「array20071020」などという名前の配列に、それぞれ入れて行きたいと思います。ループ処理でなければ出来ないと思うのですが、ループ処理内で配列を宣言していく方法はあるでしょうか。

Aベストアンサー

dim array20071020 as string
dim array20071021 as string
dim array20071022 as string
...
みたいな事をプログラムでと言う事だと思うのですが、多分できないと思います。

で、excelにはcollectionと言う、名前も変数も文字にできるオブジェクトがあるので、
dim csv as new collection
csv.Add loadCsv("20071020"),"20071020"
csv.Add loadCsv("20071021"),"20071021"
csv.Add loadCsv("20071022"),"20071022"
(loadCsvはたとえばの関数です)
と追加しておけば、
str=csv("20071020")
で読み出せます。

collectionのアイテムは、文字とか変数だけではなく、配列やオブジェクトとかを、個々に指定できる点が便利です。
Dim hoge(1, 2) As Integer
hoge(1, 1) = 11
hoge(1, 2) = 12
Dim fumu As New Collection
fumu.Add 123, "20071020"
fumu.Add "abc", "20071021"
fumu.Add hoge, "20071022"
fumu.Add Range("A1:C5"), "20071023"
MsgBox fumu("20071020")
MsgBox fumu("20071021")
MsgBox fumu("20071022")(1, 1)
MsgBox fumu("20071022")(1, 2)
MsgBox fumu("20071023").Rows.Count
MsgBox fumu("20071023").Columns.Count

dim array20071020 as string
dim array20071021 as string
dim array20071022 as string
...
みたいな事をプログラムでと言う事だと思うのですが、多分できないと思います。

で、excelにはcollectionと言う、名前も変数も文字にできるオブジェクトがあるので、
dim csv as new collection
csv.Add loadCsv("20071020"),"20071020"
csv.Add loadCsv("20071021"),"20071021"
csv.Add loadCsv("20071022"),"20071022"
(loadCsvはたとえばの関数です)
と追加しておけば、
str=csv("20071020")
で読み...続きを読む


人気Q&Aランキング

おすすめ情報