0
我正在使用寫入方法直接寫入pixels
這是一個array of array[(R, G, B)] of byte;
。 的pixels
正確分配,像這樣:setlength(pixels, 750000);
我做什麼如下:FileWrite不會寫入所有字節
f := TFileStream.create(FileName, fmCreate);
written := f.write(pixels, 750000);
的問題是,在寫方法返回0,換言之它並沒有從pixels
寫一個字節。 有了一些測試,我發現它僅複製了約20000個字節,肯定不會超過30000的那一刻,我給它更多的寫的,它不..並返回0
我是Pascal的新手,但我找不到解決這個不愉快問題的方法。那麼我做錯了什麼?
我從來沒有使用fpc編譯器,但我不知道什麼tFileStream.Write上的簽名是 - 它可能會期待一個16位整數? –
@LorenPechtel我不知道。 FPC指出:「這個類是系統過程FileOpen,FileCreate,FileRead,FileWrite,FileSeek和FileClose的封裝,它駐留在單元SysUtils中。」所以,FileWrite需要longint。 – Malina
寫入像素[0],然後釋放流以確保文件已關閉(操作系統可能仍在緩存)。 16位的東西不是這樣,FPC使用sizeint或longint來做這種事情。 –