請問將檔案讀入陣列之疑問 |
尚未結案
|
shing.net
中階會員 ![]() ![]() ![]() 發表:207 回覆:124 積分:66 註冊:2002-03-16 發送簡訊給我 |
請問下面陣列宣告是否不一樣?
1.
BYTE *pvCert ;
pvCert=new BYTE[ulCertLength];
2.
BYTE pvCert[1013]; 為何執行
if (OpenDialog1->Execute())
{
szFilePathName=(OpenDialog1->FileName);
hSource=new TFileStream(szFilePathName,fmOpenRead);
ulCertLength=hSource->Size; //其中ulCertLength=1013
hSource->ReadBuffer(pvCert,ulCertLength); }
其值會不一樣
其中若宣告BYTE pvCert[1013];其值是正確
為何
BYTE *pvCert ;
pvCert=new BYTE[ulCertLength];
其值會少掉很多,其陣列大小不是為1013嗎?
請問是何原因?
謝謝
|
lu
高階會員 ![]() ![]() ![]() ![]() 發表:11 回覆:189 積分:195 註冊:2003-11-19 發送簡訊給我 |
引言: 請問下面陣列宣告是否不一樣? 1. BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; 2. BYTE pvCert[1013]; 為何執行 if (OpenDialog1->Execute()) { szFilePathName=(OpenDialog1->FileName); hSource=new TFileStream(szFilePathName,fmOpenRead); ulCertLength=hSource->Size; //其中ulCertLength=1013 hSource->ReadBuffer(pvCert,ulCertLength); } 其值會不一樣 其中若宣告BYTE pvCert[1013];其值是正確 為何 BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; 其值會少掉很多,其陣列大小不是為1013嗎? 請問是何原因? 謝謝試試看下面的程式碼吧 if (OpenDialog1->Execute()) { szFilePathName=(OpenDialog1->FileName); hSource=new TFileStream(szFilePathName,fmOpenRead); ulCertLength=hSource->Size; //其中ulCertLength=1013 BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; hSource->ReadBuffer(pvCert,ulCertLength); delete [] pvCert; }偶猜你是在取得 hSource->Size 就先NEW了吧,你必須先取得 hSource->Size 再NEW喔,如上面紅色部分 有件事有點好奇~~你可以直接使用TFileStream的Memory 的屬性阿,有需要將資料在取出嗎? ========================= 大家一起快樂寫程式 |
shing.net
中階會員 ![]() ![]() ![]() 發表:207 回覆:124 積分:66 註冊:2002-03-16 發送簡訊給我 |
1.我是之後才NEW
2.因為我要將檔案資料讀出,存入晶片卡中。
謝謝
引言:引言: 請問下面陣列宣告是否不一樣? 1. BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; 2. BYTE pvCert[1013]; 為何執行 if (OpenDialog1->Execute()) { szFilePathName=(OpenDialog1->FileName); hSource=new TFileStream(szFilePathName,fmOpenRead); ulCertLength=hSource->Size; //其中ulCertLength=1013 hSource->ReadBuffer(pvCert,ulCertLength); } 其值會不一樣 其中若宣告BYTE pvCert[1013];其值是正確 為何 BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; 其值會少掉很多,其陣列大小不是為1013嗎? 請問是何原因? 謝謝試試看下面的程式碼吧if (OpenDialog1->Execute()) { szFilePathName=(OpenDialog1->FileName); hSource=new TFileStream(szFilePathName,fmOpenRead); ulCertLength=hSource->Size; //其中ulCertLength=1013 BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; hSource->ReadBuffer(pvCert,ulCertLength); delete [] pvCert; }偶猜你是在取得 hSource->Size 就先NEW了吧,你必須先取得 hSource->Size 再NEW喔,如上面紅色部分 有件事有點好奇~~你可以直接使用TFileStream的Memory 的屬性阿,有需要將資料在取出嗎? ========================= 大家一起快樂寫程式 |
m8815010
版主 ![]() ![]() ![]() ![]() ![]() 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 請問下面陣列宣告是否不一樣? 1. BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; 2. BYTE pvCert[1013]; 為何執行 if (OpenDialog1->Execute()) { szFilePathName=(OpenDialog1->FileName); hSource=new TFileStream(szFilePathName,fmOpenRead); ulCertLength=hSource->Size; //其中ulCertLength=1013 hSource->ReadBuffer(pvCert,ulCertLength); } 其值會不一樣 其中若宣告BYTE pvCert[1013];其值是正確 為何 BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; 其值會少掉很多,其陣列大小不是為1013嗎? 請問是何原因? 謝謝shing.net你好 |
shing.net
中階會員 ![]() ![]() ![]() 發表:207 回覆:124 積分:66 註冊:2002-03-16 發送簡訊給我 |
問題已解決,問題出在寫入時使用sizeof()造成byte數錯誤
謝謝
引言:引言: 請問下面陣列宣告是否不一樣? 1. BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; 2. BYTE pvCert[1013]; 為何執行 if (OpenDialog1->Execute()) { szFilePathName=(OpenDialog1->FileName); hSource=new TFileStream(szFilePathName,fmOpenRead); ulCertLength=hSource->Size; //其中ulCertLength=1013 hSource->ReadBuffer(pvCert,ulCertLength); } 其值會不一樣 其中若宣告BYTE pvCert[1013];其值是正確 為何 BYTE *pvCert ; pvCert=new BYTE[ulCertLength]; 其值會少掉很多,其陣列大小不是為1013嗎? 請問是何原因? 謝謝shing.net你好 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |