我不知道这是否可行,但是我的程序中有4或5次这样的代码,但是具有不同的DOhav ***变量。我试图将其压缩为1个函数,并带有一个普通的DOhavART,DOhavART2,DOhavART3变量以覆盖这些变量。我将需要完成功能的值传递给它。但是我只能得到1个变量作为回报。我在网上搜索过各种尝试,例如使用数组函数或从3中构建结构或构建大字符串,并在返回时将其拆分,但这些方法无法使用。它的工作方式是查看一组文件夹,看其中是否包含与系统(sysSELsh),游戏(RnameSH)和它们的图像类型(ArtTYPE)相匹配的正确图像。
For Each foundDirectory In My.Computer.FileSystem.GetDirectories((lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & "\Box - Front\"))
最后,它应该具有3个具有完整路径的文件(返回),但是返回时我无法检索3个变量,当它返回时,它检查是否存在3个文件,然后将其添加到是或否的列表框。必须有3个返回值,因为这就是文件可以命名或结构化的不同方式。我在5个不同的代码部分中使用它,但是具有单独的变量,并且代码中的其他所有内容都相同。实际上有20个文件夹可以搜索所有不同类型的图像,因此将其压缩为一个函数是我的主要目标。
Public Function FINDArtTYPE(ByVal sysSELsh As String, ByVal RnameSH As String, ByVal ArtTYPE As String) As String Dim extFIND = RnameSH.Substring(RnameSH.LastIndexOf(".") + 1) Dim RepSTR As String = "" Dim DOhavART As String = "" Dim DOhavART2 As String = "" Dim DOhavART3 As String = "" If Len(extFIND) = 2 Then DOhavART = lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & ArtTYPE & Mid(RnameSH, 1, Len(RnameSH) - 3) & ".PNG" ElseIf Len(extFIND) = 3 Then DOhavART = lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & ArtTYPE & Mid(RnameSH, 1, Len(RnameSH) - 4) & ".PNG" End If If FileExists(DOhavART) = False Then DOhavART2 = lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & ArtTYPE & DBid & "-01.PNG" If InStr(3, DOhavART2, ":") <> 0 Then RepSTR = Replace(DOhavART2, ": ", "_ ") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = "" If InStr(3, DOhavART2, "'") <> 0 Then RepSTR = Replace(DOhavART2, "'", "_") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = "" If InStr(3, DOhavART2, "/") <> 0 Then RepSTR = Replace(DOhavART2, "/", "_") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = "" If InStr(3, DOhavART2, " / ") <> 0 Then RepSTR = Replace(DOhavART2, " / ", " _ ") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = "" End If If FileExists(DOhavART) = False And FileExists(DOhavART2) = False Then For Each foundDirectory In My.Computer.FileSystem.GetDirectories((lbPath & "\Images\" & Mid(sysSELsh, 1, Len(sysSELsh) - 4) & ArtTYPE)) Dim FileCount As Integer = Directory.GetFiles(foundDirectory & "\").Length If FileCount > 0 Then If Len(extFIND) = 2 Then DOhavART = foundDirectory & "\" & Mid(RnameSH, 1, Len(RnameSH) - 3) & ".PNG" If FileExists(DOhavART) = True Then DOhavART3 = DOhavART ElseIf Len(extFIND) = 3 Then DOhavART = foundDirectory & "\" & Mid(RnameSH, 1, Len(RnameSH) - 4) & ".PNG" If FileExists(DOhavART) = True Then DOhavART3 = DOhavART End If If FileExists(DOhavART) = False And FileExists(DOhavART3) = False Then DOhavART2 = (foundDirectory & "\" & DBid & "-01.PNG") If InStr(3, DOhavART2, ":") <> 0 Then RepSTR = Replace(DOhavART2, ": ", "_ ") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = "" If InStr(3, DOhavART2, "'") <> 0 Then RepSTR = Replace(DOhavART2, "'", "_") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = "" If InStr(3, DOhavART2, "/") <> 0 Then RepSTR = Replace(DOhavART2, "/", "_") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = "" If InStr(3, DOhavART2, " / ") <> 0 Then RepSTR = Replace(DOhavART2, " / ", " _ ") : If RepSTR <> "" Then DOhavART2 = RepSTR : RepSTR = "" If FileExists(DOhavART2) = True Then DOhavART3 = DOhavART2 End If End If Next End If Return DOhavART Return DOhavART2 Return DOhavART3 End Function
感谢您对此提供的任何帮助。
我不知道这是否可行,但是我的程序中有4或5次这样的代码,但是具有不同的DOhav ***变量。我正在尝试将其压缩为1个具有一般DOhavART,DOhavART2,...
仅返回List(Of String)
。