2011-07-26 50 views

回答

3

使用一个AnsiString类型和字符串安全地执行必要的类型转换的功能。

MyAnsiString := AnsiString(inet_ntoa(AddrIn.sin_addr)); 
MyString := String(MyAnsiString); 
pAddr := PChar(MyString); 
+1

这可能是不正确的。 Delphi mag中的代码表示PAnsiChar而不是PWideChar。上线“PADDR:= PChar类型(MyString的)”:在 –

+1

“‘字符’和‘PWideChar’E2010不兼容的类型的”上述结果 –

2

这取决于你想要用它做什么。你是自己使用地址,还是将它传递给外部代码?

如果你自己使用它,尝试thoiz_vd的答案。作为一般规则,尽可能多地保留字符串类型的内部字符串处理。它会为你节省很多麻烦。

在另一方面,如果你将它传递给外部例程,就像在Windows API中的东西,你必须确保数据是,该API期待的格式。这是一个有点不太明确的比第一种情况,因为当德尔福从AnsiString转变为UnicodeString为根本字符串类型,他们重做了很多在Windows单位WINAPI头,以解决该花的例程相当于widechar版本字符串。

因此,检查你想发送给什么。如果它需要PChar,请使用thoiz_vd的答案。但是,如果期望PAnsiChar,则将pAddr重新声明为PAnsiChar

相关问题