実際には、私はctypes配列をPythonリストに変換しようとしています。ctypes配列からctypes型オブジェクトを取得する方法
もし見つかった場合this thread。しかしコンパイル時に型を知っていることを前提としています。
要素のctypes型を取得することは可能ですか?
私は少なくとも1つの要素を含むpythonリストを持っています。私はtype()
はctypesの互換性のあるクラスを返さないので、これは明らかに動作しません
import ctypes
arr = (type(pyarr[0]) * len(pyarr))(*pyarr)
何かをしたいです。しかし、リストにctypesから直接作成されたオブジェクトが含まれていても、上記のコードはその型のオブジェクトインスタンスであるため機能しません。
このタスクを実行する方法はありますか?
[EDIT]
[OK]を、ここに私のために動作するコードです。私は、Pythonのリストにcomtypesサーバーメソッドから入力paratersを変換し、配列ポインタに値を返すためにそれを使用しています:
def list(count, p_items):
"""Returns a python list for the given times represented by a pointer and the number of items"""
items = []
for i in range(count):
items.append(p_items[i])
return items
def p_list(items):
"""Returns a pointer to a list of items"""
c_items = (type(items[0])*len(items))(*items)
p_items = cast(c_items, POINTER(type(items[0])))
return p_items
としてはp_list(items)
は、少なくとも一つの要素を必要とし、前に説明しました。
あなたはそうです。私の問題は実際には、 'error = HRESULT(); error = E_FAIL'のようなことをしたことです。その後、私が変換したいリストにエラーが追加されました。問題は、E_FAILがHRESULTではなくint型であることでした。したがって、 'error = HRESULT(E_FAIL)'または 'error = HRESULT();です。 (...)error.value = E_FAIL'の作業です。 – jaw
こんにちは、私は ''>結果 ''が私に与えます。 '' <__ main __。c_wchar_p_Array_2 object at 0x049CF1C0> 'ですが、' >>> result [0] 'は私のためには機能しません。 UnicodeEncodeError: 'charmap'コーデックは、位置2-7の文字をエンコードできません:文字は 'にマップします。手伝って頂けますか? –
Aleksandar