循环问题

时间:2016-01-17 04:38:40

标签: vb.net loops

我有一个循环,可以将我的资源中的视频(My.Resources。 file )保存到路径中(在这种情况下,它是C:\ Users * username * \ AppData \ Local \ Temp *视频编号* .avi)。这个循环将持续我在资源中的10个视频,它将所有这些视频保存到同一个路径。 这是我的代码:

Sub SaveAllVideos()
        Dim x As Integer
        Dim y As Object
        Dim z As Object
        Do Until x = 11
            x += 1
            y = "My.Resources." & "_" & x
            z = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\Temp\" & x & ".avi"
            Dim b As Byte() = y
            My.Computer.FileSystem.WriteAllBytes(z, y, False)
        Loop
    End Sub

问题出在

Dim b As Byte() = y

我将得到“InvalidCastException。附加信息:无法将'System.String'类型的对象强制转换为'System.Byte []'。”。这样做:

Dim b As Byte() = My.Resources.*resource*

工作正常,所以我不确定为什么我的工作无效,因为y是“My.Resources ._ number ”。那么,任何人都可以帮助我吗?也许解释为什么我做的不起作用?

编辑:尝试以某种方式将字符串转换为字节(如评论中所述),现在我在这里:

y = "My.Resources." & "_" & x 
Dim w As Byte() = System.Text.Encoding.Default.GetBytes(y) 
My.Computer.FileSystem.WriteAllBytes(z, w, False)

这会运行并保存视频,但它只包含文本“My.Resources._1”。有人帮助过任何人吗?

EDIT2:我自己解决了这个问题,这是我的最终代码

Sub SaveAllVideos()
        Dim x As Integer
        Dim y As Object
        Dim z As Object
        Do Until x = 10
            x += 1
            y = My.Resources.ResourceManager.GetObject("_" & x)
            z = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\Temp\" & x & ".avi"
            Dim b As Byte() = y
            My.Computer.FileSystem.WriteAllBytes(z, b, False)
        Loop
    End Sub

1 个答案:

答案 0 :(得分:0)

Dim b As Byte() = y

应该是

Dim b As Byte() = My.Properties.Resources.ResourceManager.GetObject(y)