ラベル Visual Studio Basic の投稿を表示しています。 すべての投稿を表示
ラベル Visual Studio Basic の投稿を表示しています。 すべての投稿を表示

水曜日, 10月 15, 2025

Visual Studio Basic_44 
同一階層内のファイル名入れ替え Vol.2

今回同一階層内のファイルに限定していますが、拡張子は変更されません。

レイアウトは上の様にしました。
L=Label
B=Button

ソースの「-----------------」は区切り線なので記述の必要はありません。

青字は自動入力部分で修正の必要はありません。 黒字が入力部分です。 緑字はコメント文なので記述の必要はありません。

------------------
Public Class Form1
' Button1: ファイルAを選択してLabel1に表示
Private Sub Button1_Click(sender As Object, _
        e As EventArgs) Handles Button1.Click
Using ofd As New OpenFileDialog
ofd.Title = "ファイルAを選択してください"
If ofd.ShowDialog() = DialogResult.OK Then
Label1.Text = ofd.FileName
End If
End Using
End Sub

' Button2: ファイルBを選択してLabel2に表示
Private Sub Button2_Click(sender As Object, _
        e As EventArgs) Handles Button2.Click
Using ofd As New OpenFileDialog
ofd.Title = "ファイルBを選択してください"
If ofd.ShowDialog() = DialogResult.OK Then
Label2.Text = ofd.FileName
End If
End Using
End Sub

' Button3: ファイル名だけを入れ替える(拡張子はそのまま)
Private Sub Button3_Click(sender As Object, _
        e As EventArgs) Handles Button3.Click
Dim fileA As String = Label1.Text
Dim fileB As String = Label2.Text

If String.IsNullOrWhiteSpace(fileA) _
            OrElse String.IsNullOrWhiteSpace(fileB) Then
MessageBox.Show("両方のファイルを指定してください。")
Exit Sub
End If
If Not File.Exists(fileA) OrElse Not File.Exists(fileB) Then
MessageBox.Show("指定されたファイルが存在しません。")
Exit Sub
End If

Dim dirA As String = Path.GetDirectoryName(fileA)
Dim dirB As String = Path.GetDirectoryName(fileB)

' 同じフォルダにあることが前提
If dirA <> dirB Then
MessageBox.Show _
            ("同じフォルダ内のファイルを選択してください。")
Exit Sub
End If

Try
Dim nameA As String = _
                Path.GetFileNameWithoutExtension(fileA)
Dim nameB As String = _
                Path.GetFileNameWithoutExtension(fileB)
Dim extA As String = Path.GetExtension(fileA)
Dim extB As String = Path.GetExtension(fileB)

Dim tempFile As String = _
                Path.Combine(dirA, "TempFile" & extA)

' A → Temp
File.Move(fileA, tempFile)
' B → A (Bの拡張子のまま)
File.Move(fileB, Path.Combine(dirA, nameA & extB))
' Temp → B (Aの拡張子のまま)
File.Move(tempFile, Path.Combine(dirA, nameB & extA))

MessageBox.Show("ファイル名を入れ替えました。")
Catch ex As Exception
MessageBox.Show("エラー: " & ex.Message)
End Try
End Sub
End Class
------------------

起動直後の画面。


用意した2つのファイルの名称を変更します。

[File A]と[File B]をクリックしてファイルを指定して[ファイル名入れ替え]をクリックして問題がなければ・・・

上のアラートが表示され・・・

拡張子はそのままでファイル名は入れ替わります。

火曜日, 9月 30, 2025

Visual Studio Basic_43 
同一階層内のファイル名入れ替え

同一階層内のファイル名を入れ替える処理をすることが多いので、安全を考えてプログラムしてみました。なお、同種類のファイルに限定していますが、そのうち別階層対応版を考えてみます。

レイアウトは上の様にしました。
L=Label
B=Button

ソースの「-----------------」は区切り線なので記述の必要はありません。

青字は自動入力部分で修正の必要はありません。 黒字が入力部分です。 緑字はコメント文なので記述の必要はありません。

------------------
Public Class Form1
' Button1: ファイルAを選択してLabel1に表示
Private Sub Button1_Click(sender As Object, _
        e As EventArgs) Handles Button1.Click
Using ofd As New OpenFileDialog
ofd.Title = "ファイルAを選択してください"
If ofd.ShowDialog() = DialogResult.OK Then
Label1.Text = ofd.FileName
End If
End Using
End Sub

' Button2: ファイルBを選択してLabel2に表示
Private Sub Button2_Click(sender As Object, _
        e As EventArgs) Handles Button2.Click
Using ofd As New OpenFileDialog
ofd.Title = "ファイルBを選択してください"
If ofd.ShowDialog() = DialogResult.OK Then
Label2.Text = ofd.FileName
End If
End Using
End Sub

' Button3: ファイル名を入れ替える
Private Sub Button3_Click(sender As Object, _
        e As EventArgs) Handles Button3.Click
Dim fileA = Label1.Text
Dim fileB = Label2.Text

If String.IsNullOrWhiteSpace(fileA) _
            OrElse String.IsNullOrWhiteSpace(fileB) Then
MessageBox.Show("ファイルを選択してください。")
Exit Sub
End If

If Not File.Exists(fileA) OrElse Not File.Exists(fileB) Then
MessageBox.Show("指定されたファイルが存在しません。")
Exit Sub
End If

' A と B が同じフォルダ内か確認
Dim dirA = Path.GetDirectoryName(fileA)
Dim dirB = Path.GetDirectoryName(fileB)
If dirA <> dirB Then
MessageBox.Show _
            ("同じフォルダ内のファイルである必要があります。")
Exit Sub
End If

Try
Dim tempFile = Path.Combine(dirA, "TempFile.tmp")

' A → Temp
File.Move(fileA, tempFile)
' B → A
File.Move(fileB, fileA)
' Temp → B
File.Move(tempFile, fileB)

MessageBox.Show("ファイル名を入れ替えました。")
Catch ex As Exception
MessageBox.Show("エラー: " & ex.Message)
End Try
End Sub

Private Sub Button4_Click(sender As Object, _
        e As EventArgs) Handles Button4.Click
Label1.ResetText()
Label2.ResetText()
End Sub

Private Sub Button5_Click(sender As Object, _
        e As EventArgs) Handles Button5.Click
End
End Sub
End Class
------------------

起動直後の画面。
用意した2つのファイルの名称を変更します。

[File A]と[File B]をクリックしてファイルを指定して[ファイル名入れ替え]をクリックして問題がなければ・・・

上のアラートが表示され・・・

ファイル名は入れ替わります。

土曜日, 12月 07, 2024

Visual Studio Basic_42 
簡易エディター作成は思ったよりも簡単でした

簡易エディター作成は思ったよりも簡単でした。

レイアウトは上の様にしました。
共通コントロールからMultilineをTrueに設定した大きめのTextBoxと、

メニューとツールバーからMenustripを上の様に設定します。
例えば New (N) は、New (&N)と入力します。

ソースの「-----------------」は区切り線なので記述の必要はありません。

青字は自動入力部分で修正の必要はありません。 黒字が入力部分です。 緑字はコメント文なので記述の必要はありません。

-----------------
Private Sub NewToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NewToolStripMenuItem.Click
    ' File>New でTextBox1をクリア
    TextBox1.Clear()
End Sub
-----------------
Private Sub OpenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OpenToolStripMenuItem.Click
    ' File>Open でTextファイルを開く
    Dim openFileDialog As New OpenFileDialog()
    openFileDialog.Filter = "テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*"
    If openFileDialog.ShowDialog() = DialogResult.OK Then
    TextBox1.Text = System.IO.File.ReadAllText(openFileDialog.FileName)
End If
End Sub
-----------------
Private Sub SaveToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveToolStripMenuItem.Click
    ' File>Save でTextファイルを保存
    Dim saveFileDialog As New SaveFileDialog()
    saveFileDialog.Filter = "テキストファイル (*.txt)|*.txt|すべてのファイル (*.*)|*.*"
    If saveFileDialog.ShowDialog() = DialogResult.OK Then
    System.IO.File.WriteAllText(saveFileDialog.FileName, TextBox1.Text)
End If
End Sub

-----------------
Private Sub ExitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ExitToolStripMenuItem.Click
    ' File>Exit でプログラム終了
    Me.Close()
End Sub
-----------------
Private Sub CutToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CutToolStripMenuItem.Click
    ' Edit>Cut でControl X
    TextBox1.Cut()
End Sub
-----------------
Private Sub CopyToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles CopyToolStripMenuItem.Click
    ' Edit>Copy でControl C
    TextBox1.Copy()
End Sub
-----------------
Private Sub PasteToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PasteToolStripMenuItem.Click
    ' Edit>Paste でControl V
    TextBox1.Paste()
End Sub
End Class
-----------------

起動し、適応な文章を入力し・・・

Copy & PasteやSave等を確認しました。
ただ・・・ここで設定しなくても、
Copy & PasteやCut等は出来ますね(^o^)
気長に育ててみたいと思います。

※File>Saave(S)は,タイプミスで、正しくはFile>Save(S)です。

土曜日, 11月 16, 2024

Visual Studio Basic_41 
元金と利率から元利合計が2倍になるのは何年後?

ちょっと気まぐれで、元金と利率から元利合計が2倍になるのは何年後?という悪趣味な計算をしてみました。ローンは怖いですよ〜。

レイアウトは上の様にしました。
L=Label
TB=TextBox
B=Button

ソースの「-----------------」は区切り線なので記述の必要はありません。

青字は自動入力部分で修正の必要はありません。 黒字が入力部分です。 緑字はコメント文なので記述の必要はありません。

------------------

Public Class Form1

    Private Sub Button1_Click(sender As Object,

        e As EventArgs) Handles Button1.Click

        ' 入力値を取得

        Dim principal As Double = Convert.ToDouble(TextBox1.Text)

        Dim rate As Double = Convert.ToDouble(TextBox2.Text) / 100


        ' 経過年数と元利合計を計算

        Dim years As Integer = 0

        Dim amount As Double = principal


        While amount <= 2 * principal

            amount += amount * rate

            years += 1

        End While


        ' 結果を表示

        Label5.Text = years.ToString()

        Label7.Text = amount.ToString("F2")

    End Sub


    Private Sub Button2_Click(sender As Object,

        e As EventArgs) Handles Button2.Click

        TextBox1.ResetText()

        TextBox2.ResetText()

        Label5.ResetText()

        Label7.ResetText()

    End Sub


    Private Sub Button3_Click(sender As Object,

        e As EventArgs) Handles Button3.Click

        End

    End Sub

End Class

------------------

調べて見ると、現在の金利は・・・
消費者金融カードローン(3.0%~18.0%)
銀行カードローン(1.8%~14.6%)
クレジットカードのキャッシング機能(7.8%~18.0%)
のようです。

出来るだけ早く返した方が良いですね。

金曜日, 11月 01, 2024

Visual Studio Basic_40 
西暦に対する十干十二支を計算

ちょっと気まぐれで、西暦に対する十干十二支(じっかんじゅうにし)を計算してみました。

レイアウトは上の様にしました。
L=Label
TB=TextBox
B=Button

ソースの「-----------------」は区切り線なので記述の必要はありません。

青字は自動入力部分で修正の必要はありません。 黒字が入力部分です。 緑字はコメント文なので記述の必要はありません。

------------------
Public Class Form1
Private Sub Button1_Click(sender As Object,
e As EventArgs) Handles Button1.Click
' TextBox1に入力された西暦を取得
Dim year As Integer
If Integer.TryParse(TextBox1.Text, year) Then
' 十干十二支を計算してLabel4に表示
Label4.ForeColor = Color.Green
Label4.Text = GetJikkanJunishi(year)
Else
' 入力が無効な場合のエラーメッセージ
Label4.ForeColor = Color.Red
Label4.Text = "有効な西暦年を入力"
End If
End Sub

Private Function GetJikkanJunishi(year As Integer) As String
' 十干の配列
Dim jikkan() As String = {"甲(きのえ)", "乙(きのと)",
"丙(ひのえ)", "丁(ひのと)", "戊(つちのえ)",
"己(つちのと)", "庚(かのえ)", "辛(かのと)",
"壬(みずのえ)", "癸(みずのと)"}
' 十二支の配列
Dim junishi() As String = {"子(ね)", "丑(うし)",
"寅(とら)", "卯(う)", "辰(たつ)", "巳(み)",
"午(うま)", "未(ひつじ)", "申(さる)",
"酉(とり)", "戌(いぬ)", "亥(い)"}

' 十干を計算(西暦年を10で割った余りで決定)
Dim jikkanIndex As Integer = (year + 6) Mod 10
' 十二支を計算(西暦年を12で割った余りで決定)
Dim junishiIndex As Integer = (year + 8) Mod 12

' 十干と十二支を結合して結果を返す
Return jikkan(jikkanIndex) & junishi(junishiIndex)
End Function

Private Sub Button2_Click(sender As Object,
e As EventArgs) Handles Button2.Click
TextBox1.ResetText()
Label4.ResetText()
End Sub

Private Sub Button3_Click(sender As Object,
e As EventArgs) Handles Button3.Click
End
End Sub
End Class
------------------

2024年は甲辰です。

関ヶ原の合戦の年は庚子でした。

関係ない文字を入力するとエラーが表示されます。

Visdual Studio 2022のBasicで作成しています。
12AnimalZodiac_100.zip
クリックするといきなりダウンロードが始まります。
実際のプログラム完成日は2024年8月17日です。
Windows版です。

水曜日, 10月 16, 2024

Visual Studio Basic_39 
正N角形の内角を割り出し偶数か奇数かを判別

正N角形の内角を割り出し偶数か奇数かを判別。数日前にアップした VBA版をVisual Studio Basicで作成。
正N角形の内角 = (180 × (N − 2))/N


レイアウトは上の様にしました。
L=Label
TB=TextBox
B=Button

ソースの「-----------------」は区切り線なので記述の必要はありません。

青字は自動入力部分で修正の必要はありません。 黒字が入力部分です。 緑字はコメント文なので記述の必要はありません。

------------------

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim n As Integer

        Dim angle As Double


        ' TextBox1に入力された値を整数に変換

        If Integer.TryParse(TextBox1.Text, n) AndAlso n >= 3 Then

            ' 正多角形の内角の角度を計算

            angle = ((n - 2) * 180) / n


            ' 角度が偶数かどうかを確認

            If angle Mod 2 = 0 Then

                ' 偶数の場合

                Label4.ForeColor = Color.Empty

                Label4.Text = angle.ToString("F0") & " 度"

                Label6.ForeColor = Color.Empty

                Label6.Text = "偶数"

            Else

                ' 奇数の場合、小数点以下4桁まで表示

                Label4.ForeColor = Color.Blue

                Label4.Text = angle.ToString("F10") & " 度"

                Label6.ForeColor = Color.Blue

                Label6.Text = "奇数"

            End If

        Else

            ' 有効な値が入力されていない場合

            Label4.ForeColor = Color.Red

            Label4.Text = "正多角形は3以上の整数です"

            Label6.ForeColor = Color.Red

            Label6.Text = "計算できません"

        End If


    End Sub


    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        TextBox1.ResetText()

        Label4.ResetText()

        Label4.ForeColor = Color.Empty

        Label6.ResetText()

        Label6.ForeColor = Color.Empty

    End Sub


    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click

        End

    End Sub

End Class

------------------

偶数の場合・・・

3未満の値の場合・・・

奇数の場合・・・

整数でも奇数の場合・・・

Visdual Studio 2022のBasicで作成しています。
InternalAngle_100.zip
クリックするといきなりダウンロードが始まります。
実際のプログラム完成日は2024年8月15日です。
Windows版です。