问个问题啊``在c++里的LPCTSTR*的类型,在delphi里怎样写?我要在delphi里传到c++里去的。
情况是这样:我要在delphi里调用c++写的dll的一个函数,这个函数有一个参数的类型是LPCTSTR*,就是一个指向多个字符串的数组,在delphi里面要怎样写才能正确传进函数里去?
情况是这样:我要在delphi里调用c++写的dll的一个函数,这个函数有一个参数的类型是LPCTSTR*,就是一个指向多个字符串的数组,在delphi里面要怎样写才能正确传进函数里去?
char *delphi:
pchar
L表示long指针这是为了兼容Windows 3.1等16位操作系统遗留下来的, 在win32中以及其他的32为操作系统中, long指针和near指针及far修饰符都是为了兼容的作用。没有实际意义。P表示这是一个指针
C表示是一个常量
T表示在Win32环境中, 有一个_T宏这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏, 那么这个字符或者字符串将被作为UNICODE字符串, 否则就是标准的ANSI字符串。
STR表示这个变量是一个字符串所以LPCTSTR就表示一个指向常固定地址的可以根据一些宏定义改变语义的字符串。
同样, LPCSTR就只能是一个ANSI字符串, 在程序中我们大部分时间要使用带T的类型定义。LPCTSTR == const TCHAR */////////////////////////////C++ LPCTSTR -> Delphi const PChar;
我的问题还是没有解决``在delphi里面,类似c++的LPCTSTR*,即指向字符串指针的指针,是怎样写的?
在Delphi中可以这样,定义一个新类型
type
PPChar = ^PChar;
ptr:^Pchar;
procedure TForm1.Button1Click(Sender: TObject);
var
pc:PChar;
begin
GetMem(pc,100);
StrCopy(pc,'Hello World');
ptr:=@pc;
ShowMessage(ptr^);
FreeMem(pc);
end;
我想的是这样,不知可行不,可行的话谁能给出代码,我不懂delphi
1.定一个pointer
2.再求出所有字符串的长度n
3.再申请一段长度为n的内存,然后把这些字符串一个一个的放到这段内存里
var
arrPChar:array[0..10] of Pchar;
或者动态申请空间