2009-03-12 13 views

答えて

0

\\と..の間に何かがないと思われます。

0

"\ .."は意味がありません。これは、データが存在しないルートフォルダの1つ上にあることを示します。さらに、ctackeは、CEが相対パスをサポートしていないとのコメントを私に伝えています。

ご使用のOSで相対パスである場合、残りの回答は引き続き適用されます。私は将来の参照のために残しておきます(そして、おそらく、多くの人が最初に投稿全体を読まずにダウンボートしているように見えます)。 :-)

データファイルがアプリケーションのフォルダの1つ上にある場合、正しいパスは '.. \ datafile.sdf'になります。いくつかのプログラミング言語では、バックスラッシュをエスケープする必要がありますので、 '.. \ datafile.sdf'になります

あなたのデータはどこにありますか?アプリが\ yourapp \ folder \ binにあり、データが\ yourapp \ folder \ dataにある場合、アプリからデータへのパスは「.. \ data \」になります。データファイルが\ yourapp \フォルダにある場合、パスは '.. \'になります。繰り返しますが、使用している言語に応じてバックスラッシュを二重にしてエスケープする必要があります。

+1

CEには相対パスはありません。 – ctacke

+0

今後の参考にご利用ください。 CEを除外するように投稿を修正します。訂正してくれてありがとう。 –

3

Windows CEには相対パスの概念がないため、無効な相対パスを「固定」しても機能しません。絶対パスを使用する必要があります。

3

入力したパスは相対パスです。 Windows CE/Mobileは、相対パスをサポートしていません。

Windows Mobileデバイスにカレントディレクトリの概念がないため、相対パスのみがわかっているリソースをどのように見つけることができますか? .Netプログラムは、いつもそれが構成されているモジュールにアクセスします(通常、.Netコンポーネントは、DLLまたはEXEファイルにパッケージされた1つのモジュールで構成されています)。次の行は、現在実行中のアセンブリへの絶対パスを返します。

string modulePath = this.GetType()。Assembly.GetModules()[0] .FullyQualifiedName;もう少しコードで

あなたはあなたのプログラムが

Path.GetDirectoryNameを実行されているディレクトリを取得することができます(this.GetType()。Assembly.GetModules()[0] .FullyQualifiedName)

を使用してその情報を使用して、リソースへの適切なパス文字列を作成できます。

注:あなたはネイティブAPIを使用して開発している場合は使用以下: GetModuleFileNameは(のGetModuleHandle(NULL)、pszFullPath、MAX_PATH);

+0

あなたが後になっているファイルがフォルダではなく「サブデバイス」である場合(私は用語が分かりませんが、Windowsエクスプローラではデバイスが「サブデバイス」または「スーパーフォルダ」に分かれていますそれはあなたがアクセスしたいものですか?私の.exeは1つの "サブデバイス"にあり、バージョン情報を読み、必要に応じて置き換える必要がある.exeは別の "サブデバイス"にあります。 .. –

関連する問題