Type USER_INF
control_sv_name As String * 16
exepath As String * 128
oraclehost As String * 16
oracleuid As String * 8
oraclepassword As String * 16
oracletbluid As String * 8
excel_reportpath As String * 128
Shortbcr_exePath As String * 128
Shortbcr_datapath As String * 128
longbcr_exepath As String * 128
longbcr_datapath As String * 128
End Type
我在vb.net中改成如下来用,是否可以
Structure USER_INF
Dim control_sv_name As String
Dim exepath As String
Dim oraclehost As String
Dim oracleuid As String
Dim oraclepassword As String
Dim oracletbluid As String
Dim excel_reportpath As String
Dim Shortbcr_exePath As String
Dim Shortbcr_datapath As String
Dim longbcr_exepath As String
Dim longbcr_datapath As String
End Structure
上面的使用可行吗?先谢谢大家帮忙啦
11 个解决方案
#1
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> _
Dim control_sv_name As String
Dim control_sv_name As String
#2
楼上的使用方法是否需要引入什么?
我用时说UnmanagedType没有定义。
谢谢。
我用时说UnmanagedType没有定义。
谢谢。
#3
System.Runtime.InteropServices
#4
参考下面的帖子
http://community.csdn.net/Expert/topic/5376/5376725.xml?temp=1.200503E-02
http://community.csdn.net/Expert/topic/5376/5376725.xml?temp=1.200503E-02
#5
楼上两位的方法我都试过了,不过似乎和vb所要实现的不一样。
vb中使用定长字符串,如果赋值超过指定长度,会将剩余部分截去的。楼上方法都试过了,指定了16的长度,赋值20位后并没有截取前16位,而是全部显示。
vb中使用定长字符串,如果赋值超过指定长度,会将剩余部分截去的。楼上方法都试过了,指定了16的长度,赋值20位后并没有截取前16位,而是全部显示。
#6
我搜过了,下面方法都用在C#中,vb.net中怎么不好使啊
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> _
Dim control_sv_name As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> _
Dim control_sv_name As String
#7
很简单啊 ,有一个类可以转换的。联系我 654645788
#8
晕,我不上QQ
有没有其他办法啊,大家帮帮忙
有没有其他办法啊,大家帮帮忙
#9
Structure USER_INF
Dim control_sv_name As String
Dim exepath As String
Dim oraclehost As String
Dim oracleuid As String
Dim oraclepassword As String
Dim oracletbluid As String
Dim excel_reportpath As String
Dim Shortbcr_exePath As String
Dim Shortbcr_datapath As String
Dim longbcr_exepath As String
Dim longbcr_datapath As String
End Structure
dim obj1 as USER_INF
with obj1
.control_sv_name=space*16
.exepath=space*128
end with
其它类同
Dim control_sv_name As String
Dim exepath As String
Dim oraclehost As String
Dim oracleuid As String
Dim oraclepassword As String
Dim oracletbluid As String
Dim excel_reportpath As String
Dim Shortbcr_exePath As String
Dim Shortbcr_datapath As String
Dim longbcr_exepath As String
Dim longbcr_datapath As String
End Structure
dim obj1 as USER_INF
with obj1
.control_sv_name=space*16
.exepath=space*128
end with
其它类同
#10
楼上这个应该改成:
dim obj1 as USER_INF
with obj1
.control_sv_name=space(16)
.exepath=space(128)
end with
确实分配了16的空间,可要是给control_sv_name赋20位,则显示为20位,不是16位。
现在需要是分配16长度,如果超出则最大显示16位。
没有其他的办法了么?
dim obj1 as USER_INF
with obj1
.control_sv_name=space(16)
.exepath=space(128)
end with
确实分配了16的空间,可要是给control_sv_name赋20位,则显示为20位,不是16位。
现在需要是分配16长度,如果超出则最大显示16位。
没有其他的办法了么?
#11
结构中还是不能使用定长字符串
不过还是感谢大家帮忙,结帖拉
不过还是感谢大家帮忙,结帖拉
#1
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> _
Dim control_sv_name As String
Dim control_sv_name As String
#2
楼上的使用方法是否需要引入什么?
我用时说UnmanagedType没有定义。
谢谢。
我用时说UnmanagedType没有定义。
谢谢。
#3
System.Runtime.InteropServices
#4
参考下面的帖子
http://community.csdn.net/Expert/topic/5376/5376725.xml?temp=1.200503E-02
http://community.csdn.net/Expert/topic/5376/5376725.xml?temp=1.200503E-02
#5
楼上两位的方法我都试过了,不过似乎和vb所要实现的不一样。
vb中使用定长字符串,如果赋值超过指定长度,会将剩余部分截去的。楼上方法都试过了,指定了16的长度,赋值20位后并没有截取前16位,而是全部显示。
vb中使用定长字符串,如果赋值超过指定长度,会将剩余部分截去的。楼上方法都试过了,指定了16的长度,赋值20位后并没有截取前16位,而是全部显示。
#6
我搜过了,下面方法都用在C#中,vb.net中怎么不好使啊
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> _
Dim control_sv_name As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> _
Dim control_sv_name As String
#7
很简单啊 ,有一个类可以转换的。联系我 654645788
#8
晕,我不上QQ
有没有其他办法啊,大家帮帮忙
有没有其他办法啊,大家帮帮忙
#9
Structure USER_INF
Dim control_sv_name As String
Dim exepath As String
Dim oraclehost As String
Dim oracleuid As String
Dim oraclepassword As String
Dim oracletbluid As String
Dim excel_reportpath As String
Dim Shortbcr_exePath As String
Dim Shortbcr_datapath As String
Dim longbcr_exepath As String
Dim longbcr_datapath As String
End Structure
dim obj1 as USER_INF
with obj1
.control_sv_name=space*16
.exepath=space*128
end with
其它类同
Dim control_sv_name As String
Dim exepath As String
Dim oraclehost As String
Dim oracleuid As String
Dim oraclepassword As String
Dim oracletbluid As String
Dim excel_reportpath As String
Dim Shortbcr_exePath As String
Dim Shortbcr_datapath As String
Dim longbcr_exepath As String
Dim longbcr_datapath As String
End Structure
dim obj1 as USER_INF
with obj1
.control_sv_name=space*16
.exepath=space*128
end with
其它类同
#10
楼上这个应该改成:
dim obj1 as USER_INF
with obj1
.control_sv_name=space(16)
.exepath=space(128)
end with
确实分配了16的空间,可要是给control_sv_name赋20位,则显示为20位,不是16位。
现在需要是分配16长度,如果超出则最大显示16位。
没有其他的办法了么?
dim obj1 as USER_INF
with obj1
.control_sv_name=space(16)
.exepath=space(128)
end with
确实分配了16的空间,可要是给control_sv_name赋20位,则显示为20位,不是16位。
现在需要是分配16长度,如果超出则最大显示16位。
没有其他的办法了么?
#11
结构中还是不能使用定长字符串
不过还是感谢大家帮忙,结帖拉
不过还是感谢大家帮忙,结帖拉