線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2281
推到 Plurk!
推到 Facebook!

日文電腦上建立路徑發生錯誤

缺席
pchw8598
一般會員


發表:43
回覆:63
積分:21
註冊:2003-11-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-03-20 23:55:21 IP:112.104.xxx.xxx 訂閱
大家好,我用XE5寫了一個簡單的建立資料夾的程式(如下)。
在我們自己的電腦上執行無誤,但是在日文的電腦上執行卻發生錯誤。
我是在c:\program files\下面建立一個"TWordPchw"資料夾。
在日文的電腦執行時,卻變成了"c:羊Program Files羊TWordPchw",(我打不出那個"羊"字:就是"羊"字少最下面那一橫撇")因此發生錯誤,無法建立資料夾。
我試了好久都沒成功,請問各位大大是否有解決的方法??? 謝謝

//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
wchar_t szBuffer[MAX_PATH];
DWORD err;
UnicodeString InstallPath,Str,DefAppPath=L"\\TWordPchw";
SHGetSpecialFolderPath(NULL, szBuffer, CSIDL_PROGRAM_FILES, FALSE);
ShowMessage (szBuffer);
InstallPath=UnicodeString(szBuffer);
Str=InstallPath DefAppPath; //動態書法的預設安裝路徑
ShowMessage (InstallPath);
ShowMessage (Str);

//建立 TWordPchw目錄
// UniStringToWChar(wStr, Str);
if(!::CreateDirectory(Str.c_str(),NULL))
{
err=GetLastError();
if(err==ERROR_ALREADY_EXISTS);
else
{
ShowMessage(UnicodeString("建立資料夾失敗"));
return;
}
}
ShowMessage(UnicodeString(L"建立" Str L"資料夾"));
}
//---------------------------------------------------------------------------

老大仔
尊榮會員


發表:77
回覆:835
積分:1082
註冊:2006-07-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-03-21 07:49:15 IP:210.61.xxx.xxx 未訂閱
符號是指這個: ¥??


===================引 用 pchw8598 文 章===================
大家好,我用XE5寫了一個簡單的建立資料夾的程式(如下)。
在我們自己的電腦上執行無誤,但是在日文的電腦上執行卻發生錯誤。
我是在c:\program files\下面建立一個"TWordPchw"資料夾。
在日文的電腦執行時,卻變成了"c:羊Program Files羊TWordPchw",(我打不出那個"羊"字:就是"羊"字少最下面那一橫撇")因此發生錯誤,無法建立資料夾。
我試了好久都沒成功,請問各位大大是否有解決的方法??? 謝謝

//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
wchar_t szBuffer[MAX_PATH];
DWORD err;
UnicodeString InstallPath,Str,DefAppPath=L"\\TWordPchw";
SHGetSpecialFolderPath(NULL, szBuffer, CSIDL_PROGRAM_FILES, FALSE);
ShowMessage (szBuffer);
InstallPath=UnicodeString(szBuffer);
Str=InstallPath DefAppPath; //動態書法的預設安裝路徑
ShowMessage (InstallPath);
ShowMessage (Str);

//建立 TWordPchw目錄
// UniStringToWChar(wStr, Str);
if(!::CreateDirectory(Str.c_str(),NULL))
{
err=GetLastError();
if(err==ERROR_ALREADY_EXISTS);
else
{
ShowMessage(UnicodeString("建立資料夾失敗"));
return;
}
}
ShowMessage(UnicodeString(L"建立" Str L"資料夾"));
}
//---------------------------------------------------------------------------

Main Chen
高階會員


發表:29
回覆:134
積分:127
註冊:2002-10-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2014-03-21 07:52:13 IP:112.104.xxx.xxx 訂閱
試試 System.IOUtils.pas 單元裡的:

IncludeTrailingPathDelimiter()
TPath.DirectorySeparatorChar

看看能不能解決你的問題。

===================引 用 pchw8598 文 章===================
大家好,我用XE5寫了一個簡單的建立資料夾的程式(如下)。
在我們自己的電腦上執行無誤,但是在日文的電腦上執行卻發生錯誤。
我是在c:\program files\下面建立一個"TWordPchw"資料夾。
在日文的電腦執行時,卻變成了"c:羊Program Files羊TWordPchw",(我打不出那個"羊"字:就是"羊"字少最下面那一橫撇")因此發生錯誤,無法建立資料夾。
我試了好久都沒成功,請問各位大大是否有解決的方法??? 謝謝

pchw8598
一般會員


發表:43
回覆:63
積分:21
註冊:2003-11-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2014-03-21 22:31:08 IP:112.104.xxx.xxx 訂閱
是的, 就是
pchw8598
一般會員


發表:43
回覆:63
積分:21
註冊:2003-11-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2014-03-21 22:33:34 IP:112.104.xxx.xxx 訂閱
 
Main Chen你好 因為我不懂delphi, 所以看不懂這兩行的用意 IncludeTrailingPathDelimiter() TPath.DirectorySeparatorChar 我有嘗試去理解但仍然不是很懂可以請你解說一下嗎? 謝謝

===================引 用 Main Chen 文 章===================
試試 System.IOUtils.pas 單元裡的:

IncludeTrailingPathDelimiter()
TPath.DirectorySeparatorChar

看看能不能解決你的問題。

===================引 用 pchw8598 文 章===================
大家好,我用XE5寫了一個簡單的建立資料夾的程式(如下)。
在我們自己的電腦上執行無誤,但是在日文的電腦上執行卻發生錯誤。
我是在c:\program files\下面建立一個"TWordPchw"資料夾。
在日文的電腦執行時,卻變成了"c:羊Program Files羊TWordPchw",(我打不出那個"羊"字:就是"羊"字少最下面那一橫撇")因此發生錯誤,無法建立資料夾。
我試了好久都沒成功,請問各位大大是否有解決的方法??? 謝謝

Main Chen
高階會員


發表:29
回覆:134
積分:127
註冊:2002-10-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2014-03-24 06:53:56 IP:112.104.xxx.xxx 訂閱
IncludeTrailingPathDelimiter() 這個函數放在 System.SysUtils.pas 它可以回傳包含 '\' 或 '/' 的字串路徑
例:
Str := 'c:\test'
Str := IncludeTrailingPathDelimiter(Str); // Str 會得到 ''c:\test\'

TPath.DirectorySeparatorChar 等於 '\' 或 '/'
例:
Str := 'c:\test' TPath.DirectorySeparatorChar;

日文環境我沒試過,但應該是可以通用的。

===================引 用 pchw8598 文 章===================
 
Main Chen你好 因為我不懂delphi, 所以看不懂這兩行的用意 IncludeTrailingPathDelimiter() TPath.DirectorySeparatorChar 我有嘗試去理解但仍然不是很懂可以請你解說一下嗎? 謝謝

系統時間:2017-10-18 2:46:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!