Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   [DELPHI] Считывание данных из Pointer (https://forum.antichat.xyz/showthread.php?t=202284)

s0l_ir0n 07.05.2010 08:17

[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);
...
При записи, в файл пишутся не данные из динамического массива, а его адрес =((
Как это исправить?

slesh 07.05.2010 09:21

p или pb пусть у тебя будет pchar и работай потом норм с ним как со строкой.
А тут ты говоришь что pb - это указатель на слово (которое 2 байта). Вот он и выводит по 2 байта.

s0l_ir0n 07.05.2010 13:07

Ап. Вопрос изменил.

slesh 07.05.2010 13:10

можно так
WriteFile(hFile,@nulldata[0],sizeOf(nulldata),bytesread,nil);
или так попробуй
WriteFile(hFile,nulldata^,sizeOf(nulldata),bytesre ad,nil);

Делфи может орать на несоответствие типов, там подбереш нужные

s0l_ir0n 07.05.2010 13:15

Компилятор орет, пропускает только
WriteFile(hFile,nulldata,sizeOf(nulldata),bytesrea d,nil);
и
WriteFile(hFile,PChar(nulldata)^,sizeOf(nulldata), bytesread,nil);
но в обоих случаях записывается адрес, а не данные((((

slesh 07.05.2010 14:35

попробуй тогда тк
WriteFile(hFile, nulldata[0], sizeOf(nulldata),bytesread,nil);

RDL_Rider 07.05.2010 15:23

По моему Sizeof в данном случае вернет размер указателя, т.е. 4 байта. Чтобы узнать длину нужно юзать ф-цию Length, не зря ведь память выделяется ф-цией SetLENGTH..


Время: 14:05