請問如使用MemoryStream將資料存入自訂的記憶體空間? |
缺席
|
anumis
一般會員 ![]() ![]() 發表:25 回覆:27 積分:15 註冊:2006-07-14 發送簡訊給我 |
[code delphi] var pmem :TMemoryStream pSpace :Pointer begin pmem := TMemoryStream.Create; pmem.LoadFromFile(...); pmem.Position := 0; pSpace := AllocMem(pmem.Size) //pmem.Read(pSpace, pmem.Size); <- 會出錯 pmem.Read(pSpace, SizeOf(pSpace)); <- 正確 FreeMem(pSpace); <- 會出錯 FreeAndNil(pmem); end; [/code] 請問是我的記憶體觀念有錯嗎? 先AllocMem 一個大小為pMem.Size的空間 再使用pMem.Read把串流寫入 最後再使用FreeMem釋放 感謝 m(_ _)m |
chih_kuan
中階會員 ![]() ![]() ![]() 發表:38 回覆:82 積分:54 註冊:2003-02-20 發送簡訊給我 |
------
叔叔有練過,初學者不要學。 |
anumis
一般會員 ![]() ![]() 發表:25 回覆:27 積分:15 註冊:2006-07-14 發送簡訊給我 |
指標的地方是我自己搞混了,忘了它就只是個"指標" <囧"
程式碼也搞定了 var pmem :TMemoryStream; pSpace :Pointer; pSpacePtr :PByteArray; begin pmem := TMemoryStream.Create; pmem.LoadFromFile('C:\a3.bmp'); pmem.Position := 0; pSpace := AllocMem(pmem.Size); pSpacePtr := pSpace; pmem.Read(pSpacePtr[0], pmem.Size); FreeMem(pSpace); FreeAndNil(pmem); end; |
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
chih_kuan
中階會員 ![]() ![]() ![]() 發表:38 回覆:82 積分:54 註冊:2003-02-20 發送簡訊給我 |
|
anumis
一般會員 ![]() ![]() 發表:25 回覆:27 積分:15 註冊:2006-07-14 發送簡訊給我 |
|
anumis
一般會員 ![]() ![]() 發表:25 回覆:27 積分:15 註冊:2006-07-14 發送簡訊給我 |
我有po code出來,並沒有不勞而獲吧 (拉椅子座下) 又不是沒回覆,自己暗幹下來 而且這個問題我是看bmp->Scanline才解掉的... 麻煩用詞可以"溫柔"點嗎? [修改內容] http://delphi.ktop.com.tw/board.php?cid=30&fid=74&tid=99104 我是在這個寫這個程式時找到方法解的 應該是我們之間對"給分"這個動作的定義不同,所以有衝突 ===================引 用 chih_kuan 文 章=================== 看來得弄一個機制,連續發問,但得分者老是 "缺席" 幾次的..就暫停行使會員相關權利,以杜絕一些老是只想"不勞而獲"的人
編輯記錄
anumis 重新編輯於 2009-08-14 12:45:26, 註解 無‧
|
chih_kuan
中階會員 ![]() ![]() ![]() 發表:38 回覆:82 積分:54 註冊:2003-02-20 發送簡訊給我 |
請問是我的記憶體觀念有錯嗎? ==> 就是因為這一問句,所以我才針對指標的部份,給予我的一些看法,我想..我自認為針對你的問句,有在關鍵點給予最適切的提醒,,剩下的,就由你自己去努力(如同你自己說你是自己想出來的)
只不過你所習得的,似乎是有點繞路的做法 var pmem :TMemoryStream; pSpace :Pointer; =存放位址的指標(只不過必須存放 ByteArray type 的位址) begin pmem := TMemoryStream.Create; pmem.LoadFromFile('C:\a3.bmp'); pmem.Position := 0; pSpace := AllocMem(pmem.Size); 而 pSpacePtr = pSpace //老實說.我不懂這一句繞路的指令,意義何在 ? pmem.Read(pSpacePtr[0], pmem.Size); ==>從 MemoryStream 讀取pmem.Size 長度的資料,並將其從pSpacePtr[0]這個位址開始塞入 FreeMem(pSpace); FreeAndNil(pmem); end; 不是我不對你的問題做更適切的回應,你也在標題中提及 請問如使用MemoryStream將資料存入自訂的記憶體空間? 那什麼叫 "自訂的記憶體空間".我想是 "自己的貯存結構吧?,那又是什麼咧?...直到你第二次回PO,人家才知道原來是 ByteArray, 又,,用ByteArray 就一定適當嗎??,你可曾想過ByteArray 最大容量多大?,當檔案大過這限制時,會不會有載圖不完全的問題?.該如何克服? 這些是我自己個人純粹經驗上的一些看法,僅供你參考參考, 至於結案給分的事情,,就讓它過去吧,
------
叔叔有練過,初學者不要學。 |
taishyang
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
anumis
一般會員 ![]() ![]() 發表:25 回覆:27 積分:15 註冊:2006-07-14 發送簡訊給我 |
會問這個問題是因為我現在在用影像擷取卡,而該卡片沒有批次取像功能 所以我才想自己AllocMem 一塊 Memory來當做暫存,所以才稱做"自訂的記憶體空間" (說結構也算,因為是要拿來存RAW 的row) 其實我對指標跟記憶體的操作,全都是自己邊看文章,邊寫程式學會的 所以一開始您的回答,對我來說,只是知道錯誤發生的原因,而無法聯想到解決的作法 最後還是看Bitmap.Scanline去聯想出來,但是又無法對上您給的提示,所以才沒有給分 指令繞路的問題,如同前面所說,我都是try and error的方式找解決方法,try到complier能過,跑出來的值又正確,對我來說就可以用了 剩下的,就等case 完成,需要最佳化時再來修 PByteArray的Size,現在處理的case 就固定是1024 8 ,所以就沒去考慮了 因為發文言不及義,導致chih_kuan前輩及副站長出面,感到萬分抱歉 m(_ _)m ===================引 用 chih_kuan 文 章=================== 請問是我的記憶體觀念有錯嗎? ==> 就是因為這一問句,所以我才針對指標的部份,給予我的一些看法,我想..我自認為針對你的問句,有在關鍵點給予最適切的提醒,,剩下的,就由你自己去努力(如同你自己說你是自己想出來的) 只不過你所習得的,似乎是有點繞路的做法 var pmem :TMemoryStream; pSpace :Pointer; =存放位址的指標(只不過必須存放 ByteArray type 的位址) begin pmem := TMemoryStream.Create; pmem.LoadFromFile('C:\a3.bmp'); pmem.Position := 0; pSpace := AllocMem(pmem.Size); 而 pSpacePtr = pSpace //老實說.我不懂這一句繞路的指令,意義何在 ? pmem.Read(pSpacePtr[0], pmem.Size); ==>從 MemoryStream 讀取pmem.Size 長度的資料,並將其從pSpacePtr[0]這個位址開始塞入 FreeMem(pSpace); FreeAndNil(pmem); end; 不是我不對你的問題做更適切的回應,你也在標題中提及 請問如使用MemoryStream將資料存入自訂的記憶體空間? 那什麼叫 "自訂的記憶體空間".我想是 "自己的貯存結構吧?,那又是什麼咧?...直到你第二次回PO,人家才知道原來是 ByteArray, 又,,用ByteArray 就一定適當嗎??,你可曾想過ByteArray 最大容量多大?,當檔案大過這限制時,會不會有載圖不完全的問題?.該如何克服? 這些是我自己個人純粹經驗上的一些看法,僅供你參考參考, 至於結案給分的事情,,就讓它過去吧, |
syntax
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
就小弟所知,溫文有理的人,就算他人的幫助沒有實質的好處,甚至於幫倒忙時,也仍會說聲謝謝,感謝對方的「這份心」
同時也宣示「我是一個很有禮貌的人」 所以,說聲謝謝,其實好處很多,不只是讚美對方,其實誇耀自己虛懷若古的成分更大 反過來說,因為認為對方沒有助益,而覺得或不願說聲謝的,多半是在宣告世人說自己其實是個「混蛋」 (因為先求助的是自己,可不是別人沒事雞婆而來,更不用說網際網路,誰都可以發表看法,可以接受,也可以不理、若否定,就是想要挑戰,如此,結果莫怪人) 以上是感想沒有特定說是誰 至於不勞而獲,我是覺得 anumis 應該沒有這方面的狀況,因為他已經做過 (將程式寫出來),只是有問題而已 而且他也會說道歉... 之類的,可見禮貌也很好 到是,提供另一種看法,大家參考看看 反正要結案,而且這裡的積分,又不能換現金,多給一點又何妨,給誰也都沒差,要是我,就隨便選一個 沒辦法決定時,那就寫程式亂數選一下吧!還可以順便練習練習 ~ 因為討論程式問題,產出有用的資訊,小弟覺得比,討論結案者是誰,有趣也有用多了 小小意見,參考參考 PS. 哪天,積分可以換現金時,可別忘了通知我,我可要好好來衝積分一下,6_< (這是本文重點) ===================引 用 anumis 文 章=================== 會問這個問題是因為我現在在用影像擷取卡,而該卡片沒有批次取像功能 所以我才想自己AllocMem 一塊 Memory來當做暫存,所以才稱做"自訂的記憶體空間" (說結構也算,因為是要拿來存RAW 的row) 其實我對指標跟記憶體的操作,全都是自己邊看文章,邊寫程式學會的 所以一開始您的回答,對我來說,只是知道錯誤發生的原因,而無法聯想到解決的作法 最後還是看Bitmap.Scanline去聯想出來,但是又無法對上您給的提示,所以才沒有給分 指令繞路的問題,如同前面所說,我都是try and error的方式找解決方法,try到complier能過,跑出來的值又正確,對我來說就可以用了 剩下的,就等case 完成,需要最佳化時再來修 PByteArray的Size,現在處理的case 就固定是1024 8 ,所以就沒去考慮了 因為發文言不及義,導致chih_kuan前輩及副站長出面,感到萬分抱歉 m(_ _)m ===================引 用 chih_kuan 文 章=================== 請問是我的記憶體觀念有錯嗎? ==> 就是因為這一問句,所以我才針對指標的部份,給予我的一些看法,我想..我自認為針對你的問句,有在關鍵點給予最適切的提醒,,剩下的,就由你自己去努力(如同你自己說你是自己想出來的) 只不過你所習得的,似乎是有點繞路的做法 var pmem :TMemoryStream; pSpace :Pointer; =存放位址的指標(只不過必須存放 ByteArray type 的位址) begin pmem := TMemoryStream.Create; pmem.LoadFromFile('C:\a3.bmp'); pmem.Position := 0; pSpace := AllocMem(pmem.Size); 而 pSpacePtr = pSpace //老實說.我不懂這一句繞路的指令,意義何在 ? pmem.Read(pSpacePtr[0], pmem.Size); ==>從 MemoryStream 讀取pmem.Size 長度的資料,並將其從pSpacePtr[0]這個位址開始塞入 FreeMem(pSpace); FreeAndNil(pmem); end; 不是我不對你的問題做更適切的回應,你也在標題中提及 請問如使用MemoryStream將資料存入自訂的記憶體空間? 那什麼叫 "自訂的記憶體空間".我想是 "自己的貯存結構吧?,那又是什麼咧?...直到你第二次回PO,人家才知道原來是 ByteArray, 又,,用ByteArray 就一定適當嗎??,你可曾想過ByteArray 最大容量多大?,當檔案大過這限制時,會不會有載圖不完全的問題?.該如何克服? 這些是我自己個人純粹經驗上的一些看法,僅供你參考參考, 至於結案給分的事情,,就讓它過去吧, |
ANDY8C
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
本來是要 搜尋 BYTEARRAY ..... 無意中看到這篇的對話
感覺很有意思 !! 工程人員的技術固然重要,數據清楚,0 與 1 不可混淆! 但是如果有一天, 您和異性朋友在花前月下賞花/賞月 當有人說 " 今晚的月亮好圓好美 " 時 若有人說........ "那有圓規畫的圓" 之類的,您感覺如何 ? 所以,...唉! ...我要說的是一種生活態度的感覺... 生活要有一點情趣,人生才不會無聊,縱然程式很會寫,但還有其它事情值得關心....對方的感受. 在台灣社會上,大部分人是有禮貌的,這是一種生活的文化資產. 謝謝您
------
--------------------------------------- 偶爾才來 KTOP ,交流條碼問題,在 FB [條碼標籤達人] 社團留言,感恩. |
chih_kuan
中階會員 ![]() ![]() ![]() 發表:38 回覆:82 積分:54 註冊:2003-02-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |