明天就放假.. 散分. 同时来计论一个问题. 问题的最佳回答者再加开一个 200 分贴
如何在 Delphi 中使用双指针?
相当于 C 中的 char ** St;
代码:
Type
P_usePChar = ^PChar;
procedure TForm1.FormCreate(Sender: TObject);
var
m_outputBuffers: P_usePChar;
i: Integer;
const
N_BUFFERS = 10;
StringLeng = 255;
begin
m_outputBuffers := P_usePChar(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)));
m_outputBuffers^ := m_outputBuffers^ + 1;
end;
{
此处应加上什么语句才能使
m_outputBuffers^ 返回开始处??
}
for i := 0 to N_BUFFERS - 1 do
Self.Memo1.Lines.Add(m_outputBuffers^ + ':' + IntToStr(DWORD(m_outputBuffers^)));
{
此处应加上什么语句才能使
m_outputBuffers^ 返回开始处??
}
for i := 0 to N_BUFFERS - 1 do
begin
GloBalFreePtr(m_outputBuffers^); //释放产生错误: 无效指针
m_outputBuffers^ := m_outputBuffers^ + 1;
end;
GloBalFreePtr(m_outputBuffers); //释放内存
end;