Seite 1 von 1

Suchpfad erweitern seit Python 3.1

Verfasst: Montag 19. Oktober 2009, 19:55
von Maple99
Grr......leider schweigt sich die Python-Doku dazu aus aber anscheinend wurde da was geändert.
Ich will aus C ein Python-Modul öffnen, Dazu muss ich den Suchpfad um das aktuelle Verzeichnis erweitern, aber ich weiß nicht wie.
Hier http://www.python-forum.de/viewtopic.ph ... 41d5a5f3af wurde ja schon eine Lösung präsentiert, aber leider hilft diese mir nicht weiter, da der Suchpafd nur auf das aktuelle Verzeichnis gesetzt wird, aber ich benötige das aktuelle Verzeichnis ZUSÄTZLICH.
Ist das echt so schwierig?

Verfasst: Dienstag 20. Oktober 2009, 18:17
von Maple99
Hat denn dazu wirklich keiner eine Idee. Die Python-Leute können doch nicht do dumm sein und nur an einer einzigen Stelle diesen Datentyp verwenden. Wie komme ich denn ohne C++ zu verwenden von char* nach wchar_t* und umgekehrt??

Verfasst: Dienstag 20. Oktober 2009, 18:24
von birkenfeld
Deine zwei Posts passen irgendwie nicht zusammen...

Verfasst: Dienstag 20. Oktober 2009, 18:32
von Maple99
Hi,

vielleicht nicht offensichtlich, aber ich werde das Problem dann vielleicht noch mal spezifizieren.
Also ich hatte bisher mit Py_GetPath() den Pfad als char* geholt und an diesen "String" meinen zusätzlichen Pfad angehängt, da ich keine Möglichkeit kenne wie man den Pfad sonst erweitern kann (aus dem C-Programm). Dann habe ich den neu zusammengesetzten String per PySys_SetPath(neuerString) gesetzt und hatte den korrekten Pfad, sodass ich mein Modul importieren kann.

Seit Python3 nimmt PySys_SetPath() und gibt Py_GetPath() einen wchar* statt einen "normalen" char*. Jetzt klappt also mein String-Anhänge-Algorithmus nicht mehr da dieser nur mit char* arbeitet.
Das Problem ist, dass ich nicht weiss wie ich an einen String des Typs wchar* eine Zeichenreihe anhänge ;(

Verfasst: Dienstag 20. Oktober 2009, 18:36
von Hyperion
Maple99 hat geschrieben: Seit Python3 nimmt PySys_SetPath() und gibt Py_GetPath() einen wchar* statt einen "normalen" char*. Jetzt klappt also mein String-Anhänge-Algorithmus nicht mehr da dieser nur mit char* arbeitet.
Das Problem ist, dass ich nicht weiss wie ich an einen String des Typs wchar* eine Zeichenreihe anhänge ;(
Laut meinem Büchlein "C - kurz & gut" sollten die String Funktionen für wchars in wchar.h zu finden sein. Damit sollte es eine wchar *wcsncat() Funktion geben (als Pendant zu char * strncat()).

Verfasst: Dienstag 20. Oktober 2009, 19:21
von Maple99
Oh man du hast recht, aber entweder ich bin zu blöd zwei Parameter zu übergeben oder meine Kiste will mich hier heute fertig machen. Ich bekomme immer ein SegFault, wenn ich kopieren oder konkatenieren will ;(
Hast du da noch einmal einen Tip. Selbst dieses einfaches Beispiel schläge fehl.

int main(int argc, char ** argv) {
wchar_t * s1 = L"str1\0";
wchar_t * s2 = L"str2\0";

wcscpy(s1, s2);
return 0;
}

Verfasst: Dienstag 20. Oktober 2009, 19:46
von Maple99
hat sich geklärt. Danke :D