m_outputBuffers定义为:
char** m_outputBuffers;请问这一句得如何才翻译成Pascal:?
m_outputBuffers = (char**) malloc(sizeof(char*) * 2);
for ( i = 0; i < N_BUFFERS; i++ )
m_outputBuffers[i] = (char*) malloc(sizeof(char) * 2);
非常感谢!!
char** m_outputBuffers;请问这一句得如何才翻译成Pascal:?
m_outputBuffers = (char**) malloc(sizeof(char*) * 2);
for ( i = 0; i < N_BUFFERS; i++ )
m_outputBuffers[i] = (char*) malloc(sizeof(char) * 2);
非常感谢!!
解决方案 »
- 有个PUBLISHED类继承找不到父类
- 当combobox1内容改变时灵性combobox2里的内容也跟着改变
- 这样的窗口怎样做啊,谢谢高手看看?
- 有时间没来了,问问bsSkin控件里的Hint控件怎么用呀??
- 小菜一碟-线程基础知识(通俗篇、俗篇、俗),菜鸟老鸟,需要的都来看!
- 谢了!
- 哪有免费的ftp可提供上资料呢(借用一下)?
- ADO的问题(急&在线等待)
- 关于一个图书管理软件…………
- 请问是否非新增加的字段不能触发OnCalcFields事件,谢谢各位高手参与!
- 问一个 CS脚本
- 各位大个,小弟查询时想安顺序,group by记录,但是group 中包含记录的个数随机的,现在小弟用dataset,修改每个记录的group id ,然后使用grou
var
poutPutbuff :ppChar;
...
poutPutbuff := setlength(2);
for i :=0 to N_BUFFERS - 1 do
begin
poutPutbuff[1] = sellegth(2)
Inc(i);
end;
在窗体中添加一个 Memo 组件. 一个 Button 组件.
Button 组件的 OnClick 事件如下:procedure TForm1.Button1Click(Sender: TObject);
var
m_outputBuffers: Array of PChar; //定义数组
i: Integer;
const
N_BUFFERS = 10;
begin
SetLength(m_outputBuffers, N_BUFFERS);//分配空间 Self.Memo1.Lines.Clear;
for i := 0 to N_BUFFERS - 1 do //分配空间并赋值
begin
//为 PChar 变量分配空间
m_outputBuffers[i] := PChar(GlobalAllocPtr(GMEM_MOVEABLE or GMEM_SHARE,
SizeOf(Char) * 2)); //赋值. 注意, 要用 StrCopy 方法.
StrCopy(m_outputBuffers[i], PChar(IntToStr(i)));
Self.Memo1.Lines.Add(m_outputBuffers[i] + ':' + IntToStr(DWORD(m_outputBuffers[i])));
end; for i := 0 to N_BUFFERS - 1 do
begin
Self.Memo1.Lines.Add(Format('%s', [m_outputBuffers[i]]) + ':' + IntToStr(DWORD(m_outputBuffers[i])));
end; for i := 0 to N_BUFFERS - 1 do
begin //释放 PChar 空间
GloBalFreePtr(m_outputBuffers[i]);
end; //释放数组空间
SetLength(m_outputBuffers, 0);
end;实际应用就自己去摸索吧
procedure TForm1.Button3Click(Sender: TObject);
var
m_outputBuffers: PPChar;
i: Integer;
const
N_BUFFERS = 10;
StringLeng = 255;
begin
m_outputBuffers := PPChar(GlobalAllocPtr(GMEM_MOVEABLE or GMEM_SHARE,
SizeOf(PChar) * N_BUFFERS)); for i := 0 to N_BUFFERS - 1 do
begin
m_outputBuffers^ := PChar(GlobalAllocPtr(GMEM_MOVEABLE or GMEM_SHARE,
SizeOf(Char) * StringLeng));
StrCopy(m_outputBuffers^, PChar(IntToStr(i)));
Inc(m_outputBuffers);
end;
//返回 m_outputBuffers^指向的第一个字符
DEc(m_outputBuffers ,N_BUFFERS); //返回十个字符串
for i := 0 to N_BUFFERS - 1 do
begin
Self.Memo1.Lines.Add(m_outputBuffers^ + ':' + IntToStr(DWORD(m_outputBuffers^)));
INC(m_outputBuffers);
end; DEc(m_outputBuffers, N_BUFFERS);
for i := 0 to N_BUFFERS - 1 do
begin
GloBalFreePtr(m_outputBuffers^); //释放内存
INC(m_outputBuffers);
end;
DEc(m_outputBuffers, N_BUFFERS);
GloBalFreePtr(m_outputBuffers); //释放内存
end;
Delphi直接有PPChar类型吗?
var p,m_outputBuffers:ppchar;
i:integer;////
getmem(m_outputBuffers,N_BUFFERS*sizeof(pchar)) ;
p:=m_outputBuffers;
for i:=0 to N_BUFFERS-1 do
begin
p^ := StrAlloc(sizeof(char) * 2);
inc(p);
end;
type PPcharArray=^TPcharArray ;
TPcharArray=array[0..0] of pchar;
var m_outputBuffers:PPcharArray;
i:integer;begin
getmem(m_outputBuffers,N_BUFFERS*sizeof(pchar)) ;
for i:=0 to N_BUFFERS-1 do
m_outputBuffers[i]:= StrAlloc(sizeof(char) * 2);
end;
其实一个数组变量就是一个指针,一维数组就是一维指针,二为数组就是二维指针
如:
Int1d: array[0..10] of Integer;
pInt: ^Integer;
SetLength(pInt, 10);Int1d:array[0..10][0..10] of Integer;
type
pInt = ^Integer;
ppInt:array[0..10] of pInt;
for i := 0 to 10 do
setlength(ppInt[i], 11);
或者
ppInt = ^pInt;
int2d: ppInt;
setlength(int2d, 11);
for I := 0 to 10 do
setLength(int2d[i], 11);
to: cmain83(龙行天下2008)
Delphi直接有PPChar类型吗?
回复人: zjqyb(风清扬*任它溺水三千,我只取一瓢饮*) ( ) 信誉:100 2003-9-30 9:58:46 得分:0
有
回复人: cmain83(龙行天下2008) 有 PPChar 类型在 System.pas 文件中可以找到...-------------------------------------------------
这不是睁眼说瞎话么?我的D5里面就没有拜托确定一下版本好不好?否则给人误解~~~