1 求助:關於symbian檔案操作
我寫的程式需要從一個檔案中讀取資料,那這個檔案在我開發時應該放在什麼地方呢?當開發好之後打包成sis上傳到手機上時又放在什麼地方呢?謝謝~~
答:
開發的時候可以放到模擬器的C盤下,例如對於支援CodeWarrior的SDK,在偵錯模式下模擬器的C盤是SDK安裝目錄的"/EPOC32/WINSCW/C/"子目錄。
程式裡引用的時候可以用絕對路徑:
_LIT(KMyFile, "c://myfile.txt");
打包到手機上時可以放到C盤上也可以放到儲存卡上,引用方式類似。
2 [求助]關於symbian檔案操作
請問:在symbian系統下怎麼使用Socket通訊??謝謝!
答:
主要是用RSocketServ和RSocket這兩個類,SDK裡有例子:
“/Examples/networking/tcpip”
再請問一下,用Socket接收到從用戶端傳過來的資料流或者是檔案流後,可以儲存到本地的任意類型的檔案嗎?
比如:從用戶端把下載下來的MP3檔案以檔案流的形式通過Socket傳過來後(傳給C++的另一個進程),我們可以以a.dt的檔案名稱(類型)儲存嗎?
答:
可以儲存成本地的任意類型的檔案。
再有,您有沒有做過用C++做XML的解析.在Symbian系統下,有沒有相關的API嗎?(在內建的SDK 中,我沒有找到.更沒有找到類似的例子)
或者,能不能提供一些網站呀.小弟再此謝過了.!
答:
XML解析,我用過NewLC上的Expat庫:
http://newlc.com/mot.php3?id_mot=100
網站參見置頂文章。
*******************************************************************************
問:
讀取檔案路徑的問題。
我在程式中讀取一個txt檔案,調試的時候我放在C:/Symbian/8.0a/S60_2nd_FP2_J/epoc32/wins/c
所以程式裡檔案路徑就是“c://xxx.txt”
但向手機發布的時候發現,手機的c:不讓發布檔案。
只能放在e:上。
我考慮在調試時把這個檔案放在C:/Symbian/8.0a/S60_2nd_FP2_J/epoc32/wins/E下,可是總是找不到檔案。
請提示。。。。
答:
可以用編譯宏:
#if defined(_DEBUG)
_LIT(KMyFileName, "c://xxx.txt");
#else
_LIT(KMyFileName, "e://xxx.txt");
#endif
這樣在調試時用的是c盤上的檔案,在發布時用的是e盤上的檔案.
這是個解決的方法。
可是能不能在/epoc32/wins/E下面呢?
在Epoc32/wins下建一下名為E的檔案夾不行嗎?
樓上的,手工建的檔案夾不行阿~
Developer Library > Tools and Utilities > Emulator > Emulator configuration > How to configure virtual drives
按上面SDK協助上說的可以為模擬器映射新盤符:
開啟SDK根目錄下的“/Epoc32/Data/epoc.ini”檔案,能看見:
_EPOC_DRIVE_D /Symbian/8.0a/S60_2nd_FP2_CW/epoc32/wins/d
_EPOC_LocDrv_1 E:
把第二行替換成:
_EPOC_DRIVE_E /Symbian/8.0a/S60_2nd_FP2_CW/epoc32/wins/e
我這樣測試了一下:
1. 在SDK樓目錄下建立如下子目錄"/Epoc32/wins/e",然後在這個子目錄下建立一個空檔案a.txt
2. 建立了一個應用程式,調用如下代碼刪除e盤上的a.txt檔案
_LIT(KTest, "e://a.txt");
EikFileUtils::DeleteFile(KTest());
3. 運行後成功刪除,說明e盤可用。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
大家好,
我最近在嘗試從文字檔裡讀取資料, 並顯示在控制台上。 但是現實的時候螢幕上總是出現錯誤資訊“leave code = -12“。我查到這個錯誤資訊是”找不到指定路徑”, 使我感到很奇怪。我基本上按照symbian說明上的方法寫了代碼,也嘗試了所有可能的路徑表達方法, 但是這個問題始終解決不了。我想知道是不是問題出在我的路徑表達方式有問題? 還是讀取資料之前要進行其它的設定工作?希望大家幫忙解答, 謝謝。
程式如下:
_LIT(KMyFile,"c://....//....//terrain.txt");
RFs iFs;
User::LeaveIfError(iFs.Connect());
RFile myFile;
RFileReadStream iStrFile(myFile);
User::LeaveIfError(iStrFile.Open(iFs, KMyFile, EFileRead));
........
biyu
View Public Profile
Find all posts by biyu
#2 Re: 問題:開啟和讀取txt檔案的問題, 希望大家幫忙 - 2009-04-01, 17:00
Join Date: Jul 2007
Posts: 4,070
Location: ShenZhen, China
qxiaoyuan
Offline
Forum Nokia Champion
你的KMyFile的實際值是什麼, 不會你的代碼真的寫成"c://....//....//terrain.txt"吧, 這個路徑肯定是錯的,
要寫成你的實際路徑,
假設檔案是在c盤根目錄, 那麼寫成
_LIT(KMyFile,"c://terrain.txt");
同理, 假設在c:/data目錄下, 那麼寫成
_LIT(KMyFile,"c://Data//terrain.txt");
ps. 如果你是指模擬器, 那麼對應的c盤根目錄是在 "%Epoc32%/winscw/c"這樣與你sdk相對應的目錄下, 如"C:/Symbian/9.2/S60_3rd_FP1/Epoc32/winscw/c"
----------------------------
堅持學習, 堅持編碼
http://www.devdiv.net/
qxiaoyuan
qxiaoyuan
View Public Profile
Find all posts by qxiaoyuan
#3 Re: 問題:開啟和讀取txt檔案的問題, 希望大家幫忙 - 2009-04-01, 18:56
Join Date: Feb 2009
Posts: 4biyu
Offline
Registered User
謝謝你的回複, 問題已經解決了~~。問題出現在我沒有把檔案放到C:/Symbian/9.2/S60_3rd_FP1/Epoc32/winscw/c"路徑下,而是放在自己的目錄下了。 之前不太清楚模擬器檔案是從這個路徑下提取的。 還需要繼續努力啊~~謝謝大家了
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7
case EHelloWorldBasicCommand2:
{
RFs fsSession;
RFile rFile;
// Connects a client process to the fileserver
User::LeaveIfError(fsSession.Connect());
CleanupClosePushL(fsSession);
//Open file where the stream text is
User::LeaveIfError(rFile.Open(fsSession,KHelloFileName, EFileStreamText));//EFileShareReadersOnly));// EFileStreamText));
CleanupClosePushL(rFile);
// copy stream from file to RFileStream object
RFileReadStream inputFileStream(rFile);
CleanupClosePushL(inputFileStream);
// HBufC descriptor is created from the RFileStream object.
HBufC* fileData = HBufC::NewLC(inputFileStream, 321);
CAknInformationNote* informationNote;
informationNote = new ( ELeave ) CAknInformationNote;
// Show the information Note
informationNote->ExecuteLD( *fileData );
// Pop loaded resources from the cleanup stack
CleanupStack::PopAndDestroy(4); // filedata, inputFileStream, rFile, fsSession
fsSession.Close();
}
break;按照以上方法,S60 SDK 3.0中helloworldbasic常式可以顯示長字串。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
一
裝一個軟體說是需要用ginstall代替install,誰知道怎麼弄?
答:把 Makefile裡的install改成了/usr/ucb/install
怎樣恢複剛剛刪除的檔案(已經清空資源回收筒)
找回誤刪並清除了資源回收筒的文檔
步驟:
1、單擊“開始——運行,然後輸入regedit (開啟註冊表)
2、依次展開:HEKEY——LOCAL——MACHIME/SOFTWARE/microsoft/WINDOWS/ CURRENTVERSION/EXPLORER/DESKTOP/NAMESPACE 在左邊空白外點擊“建立”
,選擇:“主鍵”,把它命名為“645FFO40——5081——101B——9F08——00AA002F954E”
再把右邊的“預設”的主鍵的索引值設為“資源回收筒”,然後退出註冊表。就OK啦。
3、要重啟你的電腦。
只要你機器沒有運行過磁碟整理。系統完好.任何時候的檔案都可以找回來。
二
<head>裡加上
<base href=" http://<?php echo $_SERVER['SERVER_NAME'].Yii::app()->baseUrl;?>/" />
就可以寫相對路徑了 images/xx
yii開啟url轉換後