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