读书人

问个有关问题啊在c++里的LPCTSTR*的类

发布时间: 2012-02-11 09:51:35 作者: rapoo

问个问题啊``在c++里的LPCTSTR*的类型,在delphi里怎样写?我要在delphi里传到c++里去的
问个问题啊``在c++里的LPCTSTR*的类型,在delphi里怎样写?我要在delphi里传到c++里去的。
情况是这样:我要在delphi里调用c++写的dll的一个函数,这个函数有一个参数的类型是LPCTSTR*,就是一个指向多个字符串的数组,在delphi里面要怎样写才能正确传进函数里去?

[解决办法]
c++
char *

delphi:
pchar
[解决办法]
摘自:http://archlord.blog.hexun.com/7293951_d.html

////////////////////

如何理解LPCTSTR类型?


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;

[解决办法]
var
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;

读书人网 >.NET

热点推荐