2009-03-12 13 views

Antwort

0

Ich nehme an, es fehlt etwas zwischen \\ und ..

0

"\ .." macht keinen Sinn. Es zeigt an, dass Ihre Daten eine Ebene über dem Stammordner liegen, der nicht existiert. Außerdem informiert mich ctacke in den Kommentaren, dass CE relative Pfade sowieso nicht unterstützt. Wenn die relativen Pfade in Ihrem Betriebssystem unterstützt werden, gilt der Rest meiner Antwort immer noch. Ich werde es für zukünftige Referenz verlassen (und wahrscheinlich, da viele Leute scheinen, ohne den ganzen Beitrag zuerst zu lesen), ein paar Verlust des Rufs. :-)

Wenn die Datendatei eine Ebene über dem Ordner ist, in dem sich Ihre App befindet, wäre der richtige Pfad '.. \ datafile.sdf'; In einigen Programmiersprachen müssen Sie den umgekehrten Schrägstrich umgehen, damit er zu '.. \ datafile.sdf' wird.

Wo befinden sich Ihre Daten und wo befindet sich Ihre App? Wenn sich die App in \ yourapp \ folder \ bin befindet und sich Ihre Daten in \ yourapp \ folder \ data befinden, lautet der Pfad von der App zu den Daten ".. \ data \". Wenn sich die Datendatei im Ordner \ yourapp \ befindet, lautet der Pfad ".. \". Auch hier müssen Sie wahrscheinlich die Backslashes verdoppeln, um sie zu umgehen, je nachdem, welche Sprache Sie verwenden.

+1

Nicht wahr.CE hat keine relativen Pfade. – ctacke

+0

Gut für zukünftige Referenz zu wissen. Ich werde den Beitrag reparieren, um CE auszuschließen. Danke für die Korrektur. –

3

Windows CE hat kein Konzept für einen relativen Pfad. Selbst wenn Sie Ihre ungültige relative Pfadangabe "korrigiert" haben, funktioniert das nicht. Sie müssen absolute Pfade verwenden.

3

Der Pfad, den Sie eingegeben haben, ist ein relativer Pfad. Windows CE/Mobile unterstützt keine relativen Pfade.

Daraus folgt, dass, da es kein Konzept eines aktuellen Verzeichnisses auf einem Windows Mobile-Gerät gibt, wie würde man eine Ressource finden, für die nur ein relativer Pfad bekannt ist? Ein .Net-Programm hat immer Zugriff auf die Module, aus denen es besteht (normalerweise besteht eine .Net-Komponente aus einem Modul, das in einer DLL- oder EXE-Datei gepackt ist). Die folgende Zeile gibt den absoluten Pfad zur aktuell ausgeführten Assembly zurück.

Zeichenfolge modulePath = this.GetType(). Assembly.GetModules() [0] .FullyQualifiedName;

mit ein wenig mehr Code können Sie das Verzeichnis erhalten, in dem Ihr Programm

Path.GetDirectoryName läuft (this.GetType(). Assembly.GetModules() [0] .FullyQualifiedName)

Verwendung Mit dieser Information können Sie eine korrekte Pfadzeichenfolge für Ihre Ressource erstellen.

Anmerkung: Wenn Sie mit der nativen APIS entwickeln verwenden Sie die folgenden Schritte aus: GetModuleFileName (GetModuleHandle (NULL), pszFullPath, MAX_PATH);

+0

Was ist, wenn die Datei, die Sie suchen, nicht ein Ordner, sondern ein "Subdevice" ist (ich weiß nicht, was die Terminologie ist, aber im Windows Explorer ist das Gerät in "Subdevices" oder "Superfolders" unterteilt Ordner unter ihnen.Wie gibt man an, dass DAS das ist, worauf Sie zugreifen wollen? Meine .exe ist in einem "Subdevice" und die .exe, deren Versionsinformationen ich lesen muss (und möglicherweise ersetze) ist in einem anderen "Subdevice". .. –

Verwandte Themen