DOBON.NET DOBON.NETプログラミング掲示板過去ログ

どうやればいいのでしょうか

分類:[全般]

日付と題名とアドレスをまとめてひとつのものとして、
そのものを指定した分だけ作るにはどうしたらいいのでしょうか?

(日付、題名、アドレス)
(日付、題名、アドレス)
(日付、題名、アドレス)
(日付、題名、アドレス)
 ・
 ・
 ・
 ・
といったようなかんじです。
色々な方法がありますが、3つ紹介します。
特徴などを簡単に書きます。
詳しくは、キーワードを拾い出してHelpで検索してみて下さい。

・構造体を使う   =VBAではTypeキーワードに相当します。
                   Excelマクロなどにも通じた基本的な手法です。
・クラスを使う   =オブジェクト指向なプログラミングです。
                   javaなどにも通じた一般的スタイルです。
・DataTableを使う=データベースとの連携やXMLファイルへの保存読出し
                   など、+αの部分で強力な威力を発揮します。
                   .NETライブラリを積極的に活用する組み方です。

●構造体を使う

  '日付と題名とアドレスをまとめてひとつのものとする構造体を作る
  Private Structure MailData
    Public Receive As Date
    Public Title As String
    Public Address As String
  End Structure

  '上記構造体の動的配列を宣言
  Private MyMail() As MailData

  '指定した分だけ作る
  Private Sub InitMailBox(ByVal mailCount As Integer)
    ReDim MyMail(mailCount)
  End Sub

  '指定の位置へデータを格納する
  Private Sub SetMail(ByVal index As Integer, _
    ByVal recieve As Date, ByVal title As String, ByVal address As String)

    MyMail(index).Receive = recieve
    MyMail(index).Title = title
    MyMail(index).Address = address
  End Sub


●クラスを使う

'日付と題名とアドレスをまとめてひとつのものとするクラス
Public Class MyMailData
  Private m_Receive As Date
  Private m_Title As String
  Private m_Address As String

  Public ReadOnly Property Title() As String
    Get
      Return m_Title
    End Get
  End Property

  Public Sub New(ByVal recieve As Date, _
                 ByVal title As String, ByVal address As String)
    m_Receive = recieve
    m_Title = title
    m_Address = address
  End Sub
End Class

  '指定した分だけ作る(=呼ばれた回数分作る)
  Private Sub AddMail(ByVal recieve As Date, _
                      ByVal title As String, ByVal address As String)
    Dim mail As MyMailData = New MyMailData(recieve, title, address)

    MailList.Add(mail)
    'MailListはArrayListなどのコレクション
  End Sub


●DataTableを使う

  Private table As New DataTable()

  '日付と題名とアドレスをまとめてひとつのものとするテーブルを作る
  Private Sub MakeTable()
    Dim column0 As New DataColumn("Recive", _
                                  System.Type.GetType("System.Data"))
    Dim column1 As New DataColumn("Title", _
                                  System.Type.GetType("System.String"))
    Dim column2 As New DataColumn("Address", _
                                  System.Type.GetType("System.String"))

    table.Columns.Add(column0)
    table.Columns.Add(column1)
    table.Columns.Add(column2)
  End Sub

  '指定した分だけ作る(=呼ばれた回数分作る)
  Private Sub InsertMail(ByVal recieve As Date, _
                         ByVal title As String, ByVal address As String)
    Dim mail As DataRow

    mail = table.NewRow()
    mail("Recive") = recieve
    mail("Title") = title
    mail("Address") = address
  End Sub


#タイトルは質問内容を反映したものになるようにしましょう
■No430に返信(ピラルクさんの記事)

この質問の内容では、普通は誰も(少なくとも私は)答えられない(答えたくない)でしょう。(この質問に完璧な回答をつけるピラルクさんには頭が下がります。)もうすこし質問意図を伝えようとする努力がないと、通常このような質問は無視されてしまいますので、今後はお気をつけいただいたほうがよいと思います。
■No432に返信(管理人さんの記事)
> この質問の内容では、普通は誰も(少なくとも私は)答えられない(答えたくない)でしょう。(この質問に完璧な回答をつけるピラルクさんには頭が下がります。)
>もうすこし質問意図を伝えようとする努力がないと、通常このような質問は無視されてしまいますので、今後はお気をつけいただいたほうがよいと思います。

私もやりたいことがよく(というか全然)わかりませんでした。
ピラルクさんは.NETでの回答をされていますが、
分類が[全般]になっているので、旧VBの可能性もありますし。。。
(というか.NETを指定してないので、指定漏れでなければ旧VBだと思います)

で、本題ですが、
>日付と題名とアドレスをまとめてひとつのものとして、

まとめるとは?
日付、題名、アドレスをくっつけた文字列でも作成するのかと思いました。
だとするとそのときにどんな文字列を作りたいのか?どんな仕様を考えているのか
わからないのでコメントできません。
一つのデータとして取り扱いたいということならピラルクさんのアドバイスに
あるように構造体(ユーザ定義型)やクラスを利用するというのが一般的かと思います。

それともCSVファイルにでも落とせばいいのでしょうか?

>そのものを指定した分だけ作るにはどうしたらいいのでしょうか?

指定した分だけ作るとあるのですが、基になるデータは
どこから取得してどこに置いてあるのでしょう?
それがわからないことには個数分だけ繰り返してくださいとしかいいようがありません。
私も最初は「なぞなぞ」みたいだなぁと思いました。(^^)

特に記述がなければデフォルトはVB.NETと、
今まで分類など意識せずに書いていたなぁ。

> それともCSVファイルにでも落とせばいいのでしょうか?

あそこから「CSVに落とす」ってのも凄い
飛躍があるような。。。(^^;
■No433に返信(よねKENさんの記事)
> ピラルクさんは.NETでの回答をされていますが、
> 分類が[全般]になっているので、旧VBの可能性もありますし。。。
> (というか.NETを指定してないので、指定漏れでなければ旧VBだと思います)

「分類」の「全般」の意味があいまいで分かりにくいのを反省してこれを廃止し、新たに「VB6以前」と「その他」を追加しました。そして、デフォルトの分類を「.NET」としました。これで多少わかりやすくなればよいのですが。
返事が遅れてしまって本当に申し訳ありません。
質問の仕方と、また、質問の題のつけ方がわるかったせいで、
皆さんに不快な思いをさせてしまったと思います。
これからは、このような事のないようにしたいと思います。

ピラルクさん、非常に参考になりました。
僕の悪い質問に答えていただいて、本当にありがとうございます。

DOBON.NET | プログラミング道 | プログラミング掲示板