ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
[DELPHI] Запись динамического массива в файл |

07.05.2010, 08:17
|
|
Участник форума
Регистрация: 14.03.2009
Сообщений: 237
Провел на форуме: 813785
Репутация:
314
|
|
[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);
...
При записи, в файл пишутся не данные из динамического массива, а его адрес =((
Как это исправить?
Последний раз редактировалось s0l_ir0n; 07.05.2010 в 13:03..
|
|
|

07.05.2010, 09:21
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
p или pb пусть у тебя будет pchar и работай потом норм с ним как со строкой.
А тут ты говоришь что pb - это указатель на слово (которое 2 байта). Вот он и выводит по 2 байта.
|
|
|

07.05.2010, 13:07
|
|
Участник форума
Регистрация: 14.03.2009
Сообщений: 237
Провел на форуме: 813785
Репутация:
314
|
|
Ап. Вопрос изменил.
|
|
|

07.05.2010, 13:10
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
можно так
WriteFile(hFile,@nulldata[0],sizeOf(nulldata),bytesread,nil);
или так попробуй
WriteFile(hFile,nulldata^,sizeOf(nulldata),bytesre ad,nil);
Делфи может орать на несоответствие типов, там подбереш нужные
|
|
|

07.05.2010, 13:15
|
|
Участник форума
Регистрация: 14.03.2009
Сообщений: 237
Провел на форуме: 813785
Репутация:
314
|
|
Компилятор орет, пропускает только
WriteFile(hFile,nulldata,sizeOf(nulldata),bytesrea d,nil);
и
WriteFile(hFile,PChar(nulldata)^,sizeOf(nulldata), bytesread,nil);
но в обоих случаях записывается адрес, а не данные((((
|
|
|

07.05.2010, 14:35
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
попробуй тогда тк
WriteFile(hFile, nulldata[0], sizeOf(nulldata),bytesread,nil);
|
|
|

07.05.2010, 15:23
|
|
Познающий
Регистрация: 21.06.2009
Сообщений: 81
Провел на форуме: 77148
Репутация:
5
|
|
По моему Sizeof в данном случае вернет размер указателя, т.е. 4 байта. Чтобы узнать длину нужно юзать ф-цию Length, не зря ведь память выделяется ф-цией SetLENGTH..
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|