type
PzjzlStruct = ^zjzlStruct;
zjzlStruct = record
hbdm :char;
yhdm :array[0..3] of char;
yhzh :array[0..9] of char;
end;过程定义:
function ReadZjzl(zjzh: PChar; maxNum: Integer; zjzlStruct: PzjzlStruct; retNum: ^Integer);调用:
var
zjzl: PzjzlStruct;begin
zjzl := new(PzjzlStruct);
...
ret = readZjzl('00000001' , 10, zjzl, &retNum );
dispose(zjzl);
end;或者这个样子:
过程定义:
function ReadZjzl(zjzh:String; maxNum: Integer; var zjzlStruct: zjzlStruct; var retNum: Integer);
//这里如果在ReadZjzl中要修改zjzlStruct 和 retNum的话,才需要var关键字调用:
var
zjzl: zjzlStruct;//不用指针
begin
zjzl.hbdm := 'a';//初始化
...
ret = readZjzl('00000001' , 10, zjzl, retNum );
end;一般在C/C++中的函数参数中如果用指针的话,都是因为在函数内部要修改参数,所以才用
传地址。 在pascal中实现相同的功能不需要使用指针,只要在函数声明中需要修改的参数
前面加上var 关键字就可以了。另外 char * 类型可以用PChar替换。
不过类似与上面的var 的使用,最好使用String。方便一些。
在这个函数内部显然不需要修改 zjzh(因为const char *),所以就用string 就可以了。
PzjzlStruct = ^zjzlStruct;
zjzlStruct = record
hbdm :char;
yhdm :array[0..3] of char;
yhzh :array[0..9] of char;
end;过程定义:
function ReadZjzl(zjzh: PChar; maxNum: Integer; zjzlStruct: PzjzlStruct; retNum: ^Integer);调用:
var
zjzl: PzjzlStruct;begin
zjzl := new(PzjzlStruct);
...
ret = readZjzl('00000001' , 10, zjzl, &retNum );
dispose(zjzl);
end;或者这个样子:
过程定义:
function ReadZjzl(zjzh:String; maxNum: Integer; var zjzlStruct: zjzlStruct; var retNum: Integer);
//这里如果在ReadZjzl中要修改zjzlStruct 和 retNum的话,才需要var关键字调用:
var
zjzl: zjzlStruct;//不用指针
begin
zjzl.hbdm := 'a';//初始化
...
ret = readZjzl('00000001' , 10, zjzl, retNum );
end;一般在C/C++中的函数参数中如果用指针的话,都是因为在函数内部要修改参数,所以才用
传地址。 在pascal中实现相同的功能不需要使用指针,只要在函数声明中需要修改的参数
前面加上var 关键字就可以了。另外 char * 类型可以用PChar替换。
不过类似与上面的var 的使用,最好使用String。方便一些。
在这个函数内部显然不需要修改 zjzh(因为const char *),所以就用string 就可以了。
解决方案 »
- stringgrid 格子边框颜色控制?
- 关于线程插入函数如何用的问题
- 关于考勤系统的轮班问题
- 为什么会是这样?2.95<>2.95?!
- 各位大叔大婶!fastreport里的frCSVExport控件怎么用啊?????我急急急!!!
- 怎样刷新数据集中的数据
- 在线等待teamsource的serial number and key,谢谢
- ============================高智商朋友请帮忙,一首难题。================================
- *****大家讨论一下,Borland的Delphi认证管用吗?****
- 这个问题没人提出过 我考虑了好几天?我太笨了,能帮一下吗? 关于统计打印?
- 什么是批处理?
- win 2000下用程序如何把一文件拷到另一台机器的某一目录下?谢谢!
pascal 中一样可以用 new(指针对象) 来做。
用 Dispose来释放。
不过推荐使用 GetMem 和 FreeMem 函数。
new 和 dispose 是以前DOS下面的用法。
function ReadZjzl(zjzh: PChar; maxNum: Integer; zjzlStruct: PzjzlStruct; retNum: ^Integer);
应该是
function ReadZjzl(zjzh: PChar; maxNum: Integer; zjzlStruct: PzjzlStruct; retNum: ^Integer): Integer;另外一个也一样。
调用:
int readZjzl( const char * zjzh, int maxNum, zjzlStruct * zjzl , int * retNum);
过程后, 我要zjzl返回类似10个元素的数组,如VC++:
zjzlStruct * zjzl;
zjzl = new zjzlStruct[10];
在DELPHI中是如何实现的啦?
顺便问一下:我的分数如何给你呢?