固定长度字符串数组如何实现

问题描述

PrivateTypeHY_RT_SlLeftAsLonglRightAsLonglTopAsLonglBottomAsLongEndTypePrivateTypeID_CD_SsText(10)AsString*256Rect(10)AsHY_RT_SEndType请问上面两个vb程序如何转为vb.net,谢谢

解决方案

解决方案二:
.net已经没有固定长度字符串,改如下PublicStructureHY_RT_SDimlLeftAsIntegerDimlRightAsIntegerDimlTopAsIntegerDimlBottomAsIntegerEndStructurePublicStructureID_CD_SDimsText()AsStringDimRect()AsHY_RT_SEndStructurePrivateSubaa()'调用结构'初始化结构DimidsAsNewID_CD_SReDimids.sText(9)ReDimids.Rect(9)DimiAsIntegerFori=0To9ids.sText(i)=Space(256)Next'可以使用了EndSub
解决方案三:
感谢zdbb,但现在是提示参数格式不对?能否再帮我分析一下呢我是这么处理的ImportsSystem.Runtime.InteropServices声明:PrivateDeclareFunctionGet_cDataLib"Core.dll"(ByValiTypeAsInteger,ByValsNameInAsString,ByValsNameOutAsString,ByValszNameOutAsString,ByRefPstOutAsID_CD_S)AsInteger通过PrivateSubaa()'调用结构dimiResultasintegerdimsNameIn,sNameOut,sZNameOutasstring'初始化结构DimidsAsNewID_CD_SReDimids.sText(9)ReDimids.Rect(9)DimiAsIntegerFori=0To9ids.sText(i)=Space(256)NextsNameIn="C:1.bmp"szNameOut="C:11.bmp"iResult=Get_cData(1,sNameIn,"","",ids)'执行上面这句话时,系统报错,提示参数不正确EndSub'我用了多种方法,不能解决,请帮着分析一下,这样的问题怎么解决,谢谢
解决方案四:
自己顶
解决方案五:
有人处理过这样的问题吗?
解决方案六:
PrivateStructureID_CD_S<VBFixedArray(10)>DimsText()AsSystem.Text.StringBuilder<VBFixedArray(10)>DimRect()AsHY_RT_SEndStructure在某些环境中,必须将定长的字符缓冲区传递到非托管代码中以进行操作。在这种情况下,只传递字符串不起作用,原因是被调用方无法修改传递的缓冲区的内容。即使字符串是通过引用传递的,仍然无法将缓冲区初始化为给定的大小。解决方案是将StringBuilder缓冲区作为参数而不是字符串传递。StringBuilder可以由被调用方取消引用和修改,条件是它不超过StringBuilder的容量。还可将其初始化为固定长度。例如,如果将StringBuilder缓冲区初始化为容量为N,则封送拆收器将提供大小为(N+1)个字符的缓冲区。这个+1说明非托管字符串具有Null结束符,而StringBuilder却没有。

时间: 2024-09-17 04:18:02

固定长度字符串数组如何实现的相关文章

格式化固定长度字符串,格式化字符串里显示百分号

一. 在编程过程中经常需要格式对齐,这就需要把字符串格式成固定长度:     1: C++提供了setiosflags()来设置输出格式,setw(int)设置输出宽度:         cout<<setiosflags(ios::left)               <<setw(10)<<"字段1"               <<setw(10)<<"字段2"               <

截取固定长度字符串显示在页面,多余部分显示为省略号(区分汉字和字符)

汉字|显示|页面|字符串|字符串 以下是代码,呵呵,比较简单,主要是区分汉字和字母,不然一个全是字母,一个全是汉字的两条记录排列在一起时会比较难看,全字符的长度只有全汉字 的一半就显示...号了     public static string stringformat(string str,int n)                {                        ///                        ///格式化字符串长度,超出部分显示省略号,区分汉字跟字母

MySQL中随机生成固定长度字符串的方法_Mysql

要随机生成字符串代码如下: 在MySQL中定义一个随机串的方法,然后再SQL语句中调用此方法. 随机串函数定义方法: 复制代码 代码如下: CREATE DEFINER=`root`@`localhost` FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1 BEGIN DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGH

Windows系统时间如何转化为固定长度为8位的字符串

public string GetString(string data) { string DataFormat = string.Empty; if (data.Length == 10)//2014/11/23 { DataFormat = data.Replace("/", ""); } if (data.Length == 9)//2014/11/1或者2014/1/12 { //该函数是先截取再替换 if (data.Substring(4, 3).Rep

substring-给一个文件夹地址,此地址中xxx是不固定长度的任意字符串 要怎么截取到这个xxx

问题描述 给一个文件夹地址,此地址中xxx是不固定长度的任意字符串 要怎么截取到这个xxx 地址如下:E:workspacetrunkProject...ToolsV12DataBackup_xxx_yy-MM-dd_hh'mm 这是我自己的代码 为什么输出的还是原来的字符串? 表示我是菜鸟 求大神指教string str="E:workspacetrunkProject...ToolsV12DataBackup_xxx_yy-MM-dd_hh'mm"";str.Substr

怎么测字符串数组的长度

问题描述 怎么测字符串数组的长度 char a[][10]={""qwe""as""ssdc""asdfx""},怎么测这个长度,尽可能详细点,谢谢 解决方案 不是就是10吗,没有写的不是默认是 解决方案二: 如果是测试出实际存放的,那就通过循环,如果不是,计数器加1 解决方案三: char b[][10]={""aaa""bb""'c'}; in

c++-C++下int型转换成固定长度二进制字符串

问题描述 C++下int型转换成固定长度二进制字符串 我想把int型的数据转换成32位的01字符串 用itoa函数的话,前面的0好像会被忽略掉,有什么简单的函数可以用? 解决方案 int main() { char str[] = "00000000000000000000000000000000"; int n = 1234; for (int i = 0; i < 32; i++) if (((1 << i) & n) == (1 << i))

c++-关于字符串数组的长度问题

问题描述 关于字符串数组的长度问题 #includeusing namespace std; int main(){ int length; char onearray[6] = {'a''d''r''y''b'}; length = strlen(onearray); cout << ""the length of the array is:"" << length << endl; return 0;} 如果数组是onearr

link中的字符串数组可以放大它的长度和随机化么?用什么语句?

问题描述 link中的字符串数组可以放大它的长度和随机化么?用什么语句? link中的字符串数组可以放大它的长度和随机化么?用什么语句? 解决方案 先放大再随机,比如你说的1.5x arr.Concat(arr).Take(arr.Length * 3 / 2).OrderBy(_ => Guid.NewGuid()) 解决方案二: 随机化是可以的,arr.OrderBy(s=>Guid.NewGuid()).ToArray();