プロが教える店舗&オフィスのセキュリティ対策術

日記アプリを作りたいのですが、ディレクトリは西暦年月日で、日にちの中に、日にち+曜日+時間+分+秒+ミリ秒のtxtファイルを保存し、履歴ボタンを押すとListboxで一覧表示し、過去のtxtファイルも一覧表示させるには、可能でしょうか

可能でしたら、詳しくおしえてください。

「vb2010です」の質問画像

質問者からの補足コメント

  • 履歴フォームには西暦年のComboboxと月のComboboxとがあります。

      補足日時:2021/12/01 13:29
  • つらい・・・

    過去のtxtファイルも一覧表示とは、過去の西暦年月日のディレクトリです

      補足日時:2021/12/01 13:35
  • つらい・・・

    ブラウザ表示とかのコードでも書いてあるの?
    書いていません。

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/12/01 18:46
  • へこむわー

    日のフォルダはどうやって決めるのでしょう。

    これは、日にち+曜日+時間+分+秒+ミリ秒.TXTファイルにしています。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/12/01 18:52
  • うーん・・・

    過去に検索した(作業中若しくはそれまでに起動した際の全部?)ファイルorフォルダを追加する
    を実行するには、どのようにすればいいですか

    No.6の回答に寄せられた補足コメントです。 補足日時:2021/12/01 19:23
  • つらい・・・

    >日のフォルダはどうやって決めるのでしょう。
    は、月フォルダーの中にファイル保存時に日にち+曜日+時間+秒+ミリ秒.TXTファイルにしています。

      補足日時:2021/12/01 19:30
  • うーん・・・

    指定ディレクトリ内のファイル一覧を作成するで、検索すると、vb.netのプログラムしか出てきません。
    このプログラムでもvb2010で動作しますか?

    自分は、vb2010が初めてなので。

    No.4の回答に寄せられた補足コメントです。 補足日時:2021/12/01 20:41
  • つらい・・・

    履歴フォームは、こうなっています。

    「vb2010です」の補足画像8
      補足日時:2021/12/01 20:45

A 回答 (10件)

可能ですが、その仕様を満たすアプリを作ってくれ、と言っているように感じます。


その仕様を把握されているなら、それを順次コードしていけばいいだけの話です。

例えば
txtファイルを書き出すにはどうすればできるか?
指定したディレクトリから、特定の形式にマッチするファイルだけを抽出するにはどうすればできるか?
などと、コードする上で求めている一部のことが不明だから教えてくれ、とならないと、このサイトではコードの回答はしづらいので、答え方に悩みます。
    • good
    • 3

>履歴ボタンを押すとListboxで一覧表示し、過去のtxtファイルも一覧表示させるには、可能でしょうか



履歴と何に対してでしょうか?
まさか過去全てのファイル名って訳ではないですよね。
それとも絞り込む別フォームが出てくるとか。

>履歴フォームには西暦年のComboboxと月のComboboxとがあります。

日のフォルダはどうやって決めるのでしょう。

質問の度に仕様が変わるのか、回答を受けてそれに流され仕様を変えようかな?と思われるのかふめいですが、一度きちんと流れを作るべきでしょうね。
その後は既出ですから割愛しますけど。
この回答への補足あり
    • good
    • 0

ところで日記アプリ?にテキストファイルって、そのファイルにブラウザ表示とかのコードでも書いてあるの?


RichTextBoxを使うなどで。
この回答への補足あり
    • good
    • 0

こんにちは



>過去のtxtファイルも一覧表示させるには、可能でしょうか
想像するところ、そのディレクトリには日記のtxtだけが入れられていると考えてよいものと思います。

であるなら、「過去のtxtファイル」=「存在する全txtファイル」と考えて良いのではないでしょうか?
(未来の日記が入れられているのなら別だけれど、多分それは無いと想像しますので)

ですので、ご質問の内容を「指定ディレクトリ内のファイル一覧を作成する」と読み替えることができるので、そういう内容で検索すれば、サンプルはたくさん見つかることと思います。
この回答への補足あり
    • good
    • 0

個人的にですが。


フォルダを何回層にも分けてテキストファイルを保存し扱うのなら、データ量次第かもですがデータベースに書き込んで抽出条件に年・月・日を用いるとかでは無理なのでしょうか?、と感じちゃいます。
    • good
    • 0
この回答へのお礼

データベースが所有できないので、厳しいですね

お礼日時:2021/12/01 18:09

No.5です。



>データベースが所有できないので、厳しいですね

VisualStudioをインストしているならSQLServerがインスト可能とも思えますし、小規模でも可能と言うならSQLite
https://products.sint.co.jp/topsic/blog/sqlite
もありますよ。

>過去の西暦年月日のディレクトリです

ここは具体的に書かれた方が良いかと。

・過去に検索した(作業中若しくはそれまでに起動した際の全部?)ファイルorフォルダを追加する

とかね。
この回答への補足あり
    • good
    • 0

>指定ディレクトリ内のファイル一覧を作成するで、検索すると



『VB.NET フォルダ内のファイル取得』でググってみたら
https://dobon.net/vb/dotnet/file/getfiles.html

などがヒットした。

.NETってVB2002以降をそれ以前の物と分ける際に付いたと思います。
なのでVB2010でも使える時もありますが、バージョンによって機能の追加や削除がありますから確実とは言い切れないかと。
    • good
    • 0

画像(補足日時:2021/12/01 20:45)を見る限り『履歴』ではなく従来の質問の『検索』にしか思えないのですが、『何についての履歴を取りたいのか?』ですかね。


まさか『過去の記事一覧(Comboboxで条件を絞って)』ですか?

VB2010が初めてって、他に何を経験されたのか不明ですがVBAを経験していると言うならまずはそこから離れるべきかも。
そしてVB2010を基本からやっていく。
    • good
    • 0

これから二度にわたって記載するざっくりしたコードを参考に、ご自身の希望を満たすように考えてみてください。


Visual Studio 2019, .NET Framework 4.8 でコードしたものになるので、あなたの環境でも問題なく動作するかは確認していません。
(極力古いコードの仕方をしたので、動くとは思う・・・)

【DiaryManager.vb】
Imports System.IO

Public Class DiaryManager
Private Shared ReadOnly RootDirectory As String = "G:\日記"

Private Sub New()

End Sub

Public Shared Function NewDiary() As Diary
Return New Diary()
End Function

Public Shared Function CreateDiaryFilePath() As String
Dim now As DateTime = DateTime.Now
Dim directory As String = Path.Combine(RootDirectory, String.Format("{0:yyyyMM}", now))
Dim fileName As String = String.Format("{0:yyyyMMdd}{0:ddd}{0:HHmmssfff}.txt", now)
Return Path.Combine(directory, fileName)
End Function

Public Shared Function GetDiaries(year As Integer, month As Integer) As List(Of Diary)
Dim scanDirectory As String = Path.Combine(RootDirectory, String.Format("{0}{1:00}", year, month))
Dim diaries As List(Of Diary) = New List(Of Diary)()
For Each file As String In Directory.GetFiles(scanDirectory, "*", SearchOption.TopDirectoryOnly)
diaries.Add(New Diary(file))
Next
Return diaries
End Function
End Class

【Diary.vb】
Imports System.IO

Public Class Diary
Private _filePath As String = String.Empty

Public Property FilePath As String
Get
Return _filePath
End Get
Private Set(value As String)
_filePath = value
End Set
End Property

Public Property Contents As String = String.Empty

Public ReadOnly Property FileName As String
Get
Return Path.GetFileName(FilePath)
End Get
End Property

Public Sub New()

End Sub

Public Sub New(filePath As String)
Me.FilePath = filePath
End Sub

Public Sub LoadContents()
Contents = IO.File.ReadAllText(FilePath)
End Sub

Public Sub Save()
If FilePath = String.Empty Then
FilePath = DiaryManager.CreateDiaryFilePath()
End If

Dim fileDirectory As String = Path.GetDirectoryName(FilePath)
If Not Directory.Exists(fileDirectory) Then
Directory.CreateDirectory(fileDirectory)
End If

File.WriteAllText(FilePath, Contents)
End Sub
End Class
    • good
    • 3

【Form1.vb】


Public Class Form1
Private diary As Diary
Private diaryBindingSource As New BindingSource()

Public Sub New()
InitializeComponent()

contentsTextBox.DataBindings.Add(NameOf(contentsTextBox.Text), diaryBindingSource, NameOf(diary.Contents))
BindDiary()
End Sub

Private Sub newButton_Click(sender As Object, e As EventArgs) Handles newButton.Click
BindDiary()
End Sub

Private Sub saveButton_Click(sender As Object, e As EventArgs) Handles saveButton.Click
diary.Save()
End Sub

Private Sub quitButton_Click(sender As Object, e As EventArgs) Handles quitButton.Click
Application.Exit()
End Sub

Private Sub historyButton_Click(sender As Object, e As EventArgs) Handles historyButton.Click
Dim form As New Form2()
If form.ShowDialog() = DialogResult.Cancel Then
Return
End If
BindDiary(form.Response)
End Sub

Private Sub BindDiary(Optional diary As Diary = Nothing)
Me.diary = diary
If Me.diary Is Nothing Then
Me.diary = DiaryManager.NewDiary()
Else
Me.diary.LoadContents()
End If
diaryBindingSource.DataSource = Me.diary
End Sub
End Class


【Form2.vb】
Public Class Form2
Private _response As Diary = Nothing

Public Property Response As Diary
Get
Return _response
End Get
Private Set(value As Diary)
_response = value
End Set
End Property

Private Sub executeButton_Click(sender As Object, e As EventArgs) Handles findButton.Click
If Nen.SelectedIndex = -1 OrElse Tuki.SelectedIndex = -1 Then
MessageBox.Show("選択されてません。" & vbCrLf & "西暦と月を選択して下さい。", "結果")
Return
End If

Dim year As Integer = Integer.Parse(Nen.Text)
Dim month As Integer = Integer.Parse(Tuki.Text)
Try
Dim diaries As List(Of Diary) = DiaryManager.GetDiaries(year, month)
historyFilesListBox.DataSource = diaries
historyFilesListBox.DisplayMember = NameOf(Diary.FileName)

Catch
MessageBox.Show("指定されたディレクトリは存在しません。" & vbCrLf & "西暦と月を選択して下さい。", "結果")
End Try
End Sub

Private Sub historyFilesListBox_DoubleClick(sender As Object, e As EventArgs) Handles historyFilesListBox.DoubleClick
Response = historyFilesListBox.SelectedItem
DialogResult = DialogResult.OK
End Sub
End Class
    • good
    • 3

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