簡體   English   中英

FileWrite不會寫入所有字節

[英]FileWrite doesn't write all bytes

我正在使用write方法直接寫入pixels ,它是array of array[(R, G, B)] of byte; 像這樣正確分配pixelssetlength(pixels, 750000); 我要做的如下:

f := TFileStream.create(FileName, fmCreate);
written := f.write(pixels, 750000);

問題在於,write方法返回0,表明它沒有從pixels寫入字節。 通過一些測試,我發現它最多只能復制大約20000字節,肯定不超過30000,而當我給它更多寫入的信息時,它不會..並返回0。


我是Pascal的新手,但是我找不到解決這個不愉快問題的方法。 那么我在做什么錯呢?

stream.write的第一個參數是所謂的形式參數,例如stream.write(const buf; size:integer)左右。

編譯器接受傳遞給它的任何地址,並將其提供給過程。 因為您在第一層使用無邊界的數組(array ..的數組),所以它是一個動態數組,因此是一個隱藏的指針。

如果將數組傳遞給它,則實際上傳遞了存儲指針的內存位置。 解決方案:傳遞第一個元素pixel [0],它是數據的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM