HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

[DELPHI] Запись динамического массива в файл
  #1  
Старый 07.05.2010, 08:17
s0l_ir0n
Участник форума
Регистрация: 14.03.2009
Сообщений: 237
С нами: 9031410

Репутация: 314
Question [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..
 
Ответить с цитированием

  #2  
Старый 07.05.2010, 09:21
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

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

  #3  
Старый 07.05.2010, 13:07
s0l_ir0n
Участник форума
Регистрация: 14.03.2009
Сообщений: 237
С нами: 9031410

Репутация: 314
По умолчанию

Ап. Вопрос изменил.
 
Ответить с цитированием

  #4  
Старый 07.05.2010, 13:10
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

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

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

  #5  
Старый 07.05.2010, 13:15
s0l_ir0n
Участник форума
Регистрация: 14.03.2009
Сообщений: 237
С нами: 9031410

Репутация: 314
По умолчанию

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

  #6  
Старый 07.05.2010, 14:35
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

попробуй тогда тк
WriteFile(hFile, nulldata[0], sizeOf(nulldata),bytesread,nil);
 
Ответить с цитированием

  #7  
Старый 07.05.2010, 15:23
RDL_Rider
Познающий
Регистрация: 21.06.2009
Сообщений: 81
С нами: 8888963

Репутация: 5
По умолчанию

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват данных: кто, где и как И.Г. Мировые новости. Обсуждения. 0 03.12.2006 22:46



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...