2017-04-24 4 views
0

Wenn ich den folgenden Code ausführe, erhalte ich den Fehler "Ich weiß nicht, wie man Parameter konvertiert". Ich versuche es mit dem Namen Islice. Freundlich helfen.Fehler "Ich weiß nicht, wie man Parameter konvertiert" in Python

import ctypes 
from itertools import islice 

i = "sakthi srinivasan" 
sliced_text = islice(i, 0, 6) 
ctypes.windll.user32.MessageBoxW(0, sliced_text, "MsgBox", 0) 
+2

Das Meldungsfeld erwartet, dass Sie eine Zeichenfolge angeben, kein Python-Iteratorobjekt. Pass einfach "i [0: 6]". –

+0

es funktioniert! Danke :) –

Antwort

0

Das zweite Argument MessageBoxW ist ein String . Die Funktion itertools.islice gibt einen Iterator über die Zeichen in i zurück. Da ctypes nicht herausfinden kann, wie das in ein Zeichenarray umgesetzt werden soll, wird der Fehler "Ich weiß nicht, wie man Parameter konvertiert ..." ausgegeben.

Sie könnten den Iterator in einen String mit ''.join(sliced_text) konvertieren, aber der beste Weg, dies zu tun, ist hier, indem Sie das in Python-Strings eingebaute Slicing verwenden, indem Sie i[0:6] als zweites Argument übergeben. Das ist die Standardmethode zum Abrufen einer Teilzeichenfolge in Python.


Technisch ein LPCTSTR, die entweder ein const char* oder const wchar_t*, je nachdem, ob Sie in UNICODE-Konfiguration.

+0

Simon Hibbs beantwortet die Frage für das OP in den Kommentaren, aber ich dachte, ich würde eine etwas detailliertere Antwort für zukünftige Leser geben. Es wird auch verhindern, dass dies wie eine unbeantwortete Frage aussieht. – BloodGain

Verwandte Themen