我正在嘗試從 TMemoryStream 獲取位元組陣列。我正在努力了解記憶體流的作業原理。據我了解,我應該能夠使用Position和Size屬性回圈遍歷 MemoryStream。
我的預期結果是填充一個回圈遍歷記憶體流的位元組陣列,但是在調整記憶體流的Position屬性時,它會從示例 0 跳到 2,然后從 2 跳到 6。
Data.Position := 0;
repeat
SetLength(arrBytes, Length(arrBytes) 1);
Data.Read(arrBytes[High(arrBytes)], Data.Size);
Data.Position := Data.Position 1;
until (Data.Position >= Data.Size -1);
上面的代碼導致部分或在某些情況下根本沒有資料。如何正確地將資料從記憶體流轉換為位元組陣列
uj5u.com熱心網友回復:
TMemoryStream當從任何其他流中讀取資料時,位置會自動按讀取的位元組數前進。
來自TMemoryStream.Read檔案
從記憶體流中讀取最多 Count 個位元組到 Buffer 中,并將流的當前位置前進讀取的位元組數。
因此,如果您按順序讀取資料,TMemoryStream則不必自己更改記憶體位置,因為它是自動完成的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534521.html
下一篇:土耳其大寫字母?和?未出現在可編輯的TCombobox欄位中,如何強制所有表單元素使用TURKISH_CHARSET
