第16回 私は初心者です?「3.ちょっと変身 〜 配列を使ってみる」

16−3 ちょっと変身 〜 配列を使ってみる


「お、こりゃ、なかなかだな!」

普通の人なら、入り込むことを躊躇するような小汚い店でも堂々と入り込むことができる。自称B級グルメ研究家としては、ありがたい性格だ。ついでに胃腸も強いから、体質的にも恵まれているか(笑)
おかげで、オシャレな雑誌じゃ絶対に紹介されないような美味いものを見つけることができるわけだ。

せっかくだから、この店のことも覚えさせようか。
ひとまず、メモして、帰ってから追加しよう…ははは、アイツには見せられない姿だな。
「なんでPalmを使わないんですか」ってね。



さて、これを追加するんだから、Select Caseに追加すれば良いのか。
えっと、店の名前と情報を入れて、と。

    
    Sub object1004()
    
        Select case Popup1004.ItemText(Popup1004.Selected)
            Case "AB飯店"
                Field1006.Text="独特な風味の肉汁が溢れるギョウザが特徴。" + Chr(10) + "商店街北" + chr(10) + "11:00-22:00" + chr(10) + "定休日:火曜"
    
            Case "UNG本舗"
                Field1006.Text="養殖ウナギを別物に変えてしまうタレが特徴。" + Chr(10) + "商店街入り口" + Chr(10) + "10:00-19:00" + Chr(10) + "定休日:日曜"
    
        Case "RS亭"
                Field1006.Text="アルデンテという言葉を忘れたような、柔らかパスタ。" + Chr(10) + "B町の角" + Chr(10) + "10:30-20:00" + Chr(10) + "定休日:第2・4水曜"
    
            Case "UMAI屋"
                Field1006.Text="唐揚げの美味いラーメン屋。ラーメンは最悪。" + Chr(10) + "駅裏路地" + Chr(10) + "9:00-23:00" + Chr(10) + "定休日:日、祝日"
    
            Case "定食のOHI"
                Field1006.Text="とにかく飯が大盛。味はそこそこ。" + Chr(10) + "消防署横" + Chr(10) + "7:00-14:00、16:30-21:30" + Chr(10) + "定休日:なし"
    
            Case "TF三昧"
                Field1006.Text="豆腐のフルコース。3日は豆腐が見たくなくなる量。" + Chr(10) + "駅近く" + Chr(10) + "16:00-22:00" + Chr(10) + "定休日:土、日、祝日"
    
            Case "スパタST"
                Field1006.Text="食欲に任せてガンガン食べられる不思議な店。" + Chr(10) + "C町駅正面" + Chr(10) + "11:00-21:00" + Chr(10) + "年中無休"
    
        End Select
    
    End Sub
    

実行、実行。



あれ?新しい店の名前がない・・・・・・って当然か。
Popupの方に、店の名前を入れてないじゃん。



これで良しと、実行すると。

    →→→

あれぇ?
えっと、PopupとSelect Caseに入れて、どこも変わったところないしなぁ…
他のところは動くんだけど、新しい店だけが出てこないのは、どうしてだろう?

キチンと入れたはず、間違っていないはずなのに・・・・・・・わからん

mizuno-amiさんに聞いてみるか…。こんなこと質問して、いいのかどうか分からないけど…
とりあえず、ダメ元で。

    『…というアプリを作ろうとしていますが、どうも上手く動作しません。
     お忙しいとは思いますが、ソースをお送りしますので、お教えいただければ幸いです。』

Basic BASICのどこかに書いてあるようなことだったら、恥ずかしいなぁ。
それより返事は返ってくるかなぁ。




わ!返事が来た!

    『…調べてみましたが、どうやら、Popupにセットした店の名前と、Select文で使っている
    店の名前が一致していないようです。…』

そんなはずは…

    『…Popupの中の方は、半角文字が混じっていますが、Selectの方は全角ですね。
    ここが原因じゃないかと思います。』

え!?あ、確かにそうだ。
同じだと思い込んでいると、こういうミスをするのか。ちょっと恥ずかしいなぁ…

    『また1行に詰め込んでしまうと、たいへん見難いので、せめてこういう形にした方が、よろしいかと。
     ただ、重複した入力のミスを防ぐために、配列変数などを使うことをお薦めします。』


    
    Sub object1004()
    
        Dim strMess as string
    
        Select case Popup1004.ItemText(Popup1004.Selected)
            Case "AB飯店"
                strMess = "独特な風味の肉汁が溢れるギョウザが特徴。" + Chr(10) 
                strMess = strMess + "商店街北" + chr(10)
                strMess = strMsee + "11:00-22:00" + chr(10) 
                strMess = strMess + "定休日:火曜"
    
            Case "UNG本舗"
                strMess = "養殖ウナギを別物に変えてしまうタレが特徴。" + Chr(10) 
                strMess = strMess + "商店街入り口" + Chr(10)
                strMess = strMess + "10:00-19:00" + Chr(10)
                strMess = strMess + "定休日:日曜"
    
            Case "RS亭"
                strMess = "アルデンテという言葉を忘れたような、柔らかパスタ。" + Chr(10) 
                strMess = strMess + "B町の角" + Chr(10)
                strMess = strMess + "10:30-20:00" + Chr(10)
                strMess = strMess + "定休日:第2・4水曜"
    
            Case "UMAI屋"
                strMess = "唐揚げの美味いラーメン屋。ラーメンは最悪。" + Chr(10) 
                strMess = strMess + "駅裏路地" + Chr(10)
                strMess = strMess + "9:00-23:00" + Chr(10) 
                strMess = strMess + "定休日:日、祝日"
    
            Case "定食のOHI"
                strMess = "とにかく飯が大盛。味はそこそこ。" + Chr(10) 
                strMess = strMess + "消防署横" + Chr(10)
                strMess = strMess + "7:00-14:00、16:30-21:30" + Chr(10)
                strMess = strMess + "定休日:なし"
    
            Case "TF三昧"
                strMess = "豆腐のフルコース。3日は豆腐が見たくなくなる量。" + Chr(10)
                strMess = strMess + "駅近く" + Chr(10)
                strMess = strMess + "16:00-22:00" + Chr(10)
                strMess = strMess + "定休日:土、日、祝日"
    
            Case "スパタST"
                strMess = "食欲に任せてガンガン食べられる不思議な店。" + Chr(10)
                strMess = strMess + "C町駅正面" + Chr(10) 
                strMess = strMess + "11:00-21:00" + Chr(10)
                strMess = strMess + "年中無休"
    
        End Select
    
        Field1006.Text = strMess
    
    End Sub
    

あ、確かにこっちの方が見やすいや。 でも、配列変数とは。また、小難しいことを。
えっと、配列、配列、と。第5回あたりだな。
背番号のついた変数か・・・なるほど。これだけ読めば難しいけど、自分の作ったものと一緒に考えれば何となく分かる気がするぞ。

Popupでは、Selectedメソッドを使えば、何番目が選ばれているか分かるから、店の情報を配列変数に入れて番号を使って表示すれば良いってことだな。なるほど。

具体的には、どうすればいいのかな?
まず、変数ってのを使うには、第2回にあったようにDimとかGlobalとかで宣言するらしいけど、どっちを使うんだろう。
やっぱり、プログラムが始まる前に店の情報が揃ってなきゃダメだから、Startupとかで設定しなきゃならんから、Globalだな。なんとなく。
プログラムは、こんなもんで良いのか?

    
    Sub Project_Startup()
    
            Global Shop(7) as string
    
            Shop(1)= "独特な風味の肉汁が溢れるギョウザが特徴。" + Chr(10) 
            Shop(1) = Shop(1) + "商店街北" + chr(10)
            Shop(1) = Shop(1) + "11:00-22:00" + chr(10) 
            Shop(1) = Shop(1) + "定休日:火曜"
    
            Shop(2) = "養殖ウナギを別物に変えてしまうタレが特徴。" + Chr(10) 
            Shop(2) = Shop(2) + "商店街入り口" + Chr(10)
            Shop(2) = Shop(2) + "10:00-19:00" + Chr(10)
            Shop(2) = Shop(2) + "定休日:日曜"
    
            Shop(3) = "アルデンテという言葉を忘れたような、柔らかパスタ。" + Chr(10) 
            Shop(3) = Shop(3) + "B町の角" + Chr(10)
            Shop(3) = Shop(3) + "10:30-20:00" + Chr(10)
            Shop(3) = Shop(3) + "定休日:第2・4水曜"
    
            Shop(4) = "唐揚げの美味いラーメン屋。ラーメンは最悪。" + Chr(10) 
            Shop(4) = Shop(4) + "駅裏路地" + Chr(10)
            Shop(4) = Shop(4) + "9:00-23:00" + Chr(10) 
            Shop(4) = Shop(4) + "定休日:日、祝日"
    
            Shop(5) = "とにかく飯が大盛。味はそこそこ。" + Chr(10) 
            Shop(5) = Shop(5) + "消防署横" + Chr(10)
            Shop(5) = Shop(5) + "7:00-14:00、16:30-21:30" + Chr(10)
            Shop(5) = Shop(5) + "定休日:なし"
    
            Shop(6) = "豆腐のフルコース。3日は豆腐が見たくなくなる量。" + Chr(10)
            Shop(6) = Shop(6) + "駅近く" + Chr(10)
            Shop(6) = Shop(6) + "16:00-22:00" + Chr(10)
            Shop(6) = Shop(6) + "定休日:土、日、祝日"
    
            Shop(7) = "食欲に任せてガンガン食べられる不思議な店。" + Chr(10)
            Shop(7) = Shop(7) + "C町駅正面" + Chr(10) 
            Shop(7) = Shop(7) + "11:00-21:00" + Chr(10)
            Shop(7) = Shop(7) + "年中無休"
    
    End Sub
    

あんまりスマートじゃないなぁ。
ま、いいか、今に始まったことじゃないし。
これで、選択したら表示するんだろ…、Selectedで何番目が選ばれているのが分かるから、えっと…、

    
    Sub object1004()
    
        Field1006.Text=Shop(Popup1004.Selected)
    
    End Sub
    

何だか単純になっちゃったけど、これでいいのか?



お!なるほど、これだと、大文字小文字関係なく、順番だけ気をつければ良いのか。
新しい店を登録する時も、店の名前をPopupに、店の情報をStartupで配列に書き込めば良い訳だから、楽になったし、不可解な配列変数という奴も、やってみれば思ったより簡単だったな。
難しい内容でも、頭で理解しようとするより、何かと比べると理解しやすいような気がするし。
う〜ん、プログラミング。何だか楽しくなってきたぞ。

前へ    目次へ    次へ

第16回 私は初心者です?「3.ちょっと変身 〜 配列を使ってみる」