我正在創建一個使用C#和LibspotifyDotNet進行訪問的Spotify客戶端。播放列表只有給定名稱的第一個字母
我正在實現一個方法,該方法將使用給定的名稱在用戶的默認會話容器中創建一個新的播放列表。它的工作,有點。除了播放列表總是將其名稱設置爲我輸入的第一個字母,而不是整個字符串。
這裏是我使用
public IntPtr CreateNewPlaylist(string name)
{
IntPtr namePointer = IntPtr.Zero;
try
{
var sessionContainerPointer = libspotify.sp_session_playlistcontainer(GetSession());
namePointer = Marshal.StringToHGlobalUni(name);
var newPointer = libspotify.sp_playlistcontainer_add_new_playlist(sessionContainerPointer, namePointer);
return newPointer;
}
finally
{
if (namePointer != IntPtr.Zero)
Marshal.FreeHGlobal(namePointer);
}
}
我已驗證namePointer將其改回爲一個字符串,看看它返回確實確實點到整個字符串代碼。我們都很好。
我在這裏錯過了一些明顯的東西嗎?或者這是一個LibspotifyDotNet問題?還是一個Libspotify的?
謝謝。
感謝您的回答。那麼你是說使用Encoding.X.GetBytes來獲取字節數組並將其複製到內存中並使用該指針?我一直認爲這將是StringToHGlobalUni的工作方式,但我想不是那樣。 –
是的,使用ASCIIEncoding或UTF8Encoding。 StringToHGlobalUni只是分配一個非託管緩衝區並將字符串的數據複製到它。 –
太棒了!它現在按預期工作。謝謝。 –