![]() |
[DELPHI] Запись динамического массива в файл
Новый вопрос:
var nulldata:array of byte; i:integer; begin SetLength(nulldata, sizedata); for i:=1 to sizedata do nulldata[i]:=$0; ... WriteFile(hFile,nulldata,sizeOf(nulldata),bytesrea d,nil); CloseHandle(hFile); ... При записи, в файл пишутся не данные из динамического массива, а его адрес =(( Как это исправить? |
p или pb пусть у тебя будет pchar и работай потом норм с ним как со строкой.
А тут ты говоришь что pb - это указатель на слово (которое 2 байта). Вот он и выводит по 2 байта. |
Ап. Вопрос изменил.
|
можно так
WriteFile(hFile,@nulldata[0],sizeOf(nulldata),bytesread,nil); или так попробуй WriteFile(hFile,nulldata^,sizeOf(nulldata),bytesre ad,nil); Делфи может орать на несоответствие типов, там подбереш нужные |
Компилятор орет, пропускает только
WriteFile(hFile,nulldata,sizeOf(nulldata),bytesrea d,nil); и WriteFile(hFile,PChar(nulldata)^,sizeOf(nulldata), bytesread,nil); но в обоих случаях записывается адрес, а не данные(((( |
попробуй тогда тк
WriteFile(hFile, nulldata[0], sizeOf(nulldata),bytesread,nil); |
По моему Sizeof в данном случае вернет размер указателя, т.е. 4 байта. Чтобы узнать длину нужно юзать ф-цию Length, не зря ведь память выделяется ф-цией SetLENGTH..
|
| Время: 14:05 |