2011-07-26 80 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

相關問題