Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.01.2011, 17:59   #1
niki2012
Пользователь
 
Аватар для niki2012
 
Регистрация: 03.01.2011
Сообщений: 64
Стрелка Сохранение массива байтов в файл

Необходимо сохранить массив байтов в файл, вроде можно как-то в поток перегнать а потом уже в файл, подскажите... (желательно с кодом)

А еще плз подскажите как можно открыть exe'шник в массив байтов
Программист - это не тот, кто пишет программы, а тот, чьи программы работают.

Последний раз редактировалось niki2012; 08.01.2011 в 18:06. Причина: .
niki2012 вне форума Ответить с цитированием
Старый 08.01.2011, 19:40   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,713
По умолчанию

AssignFile, Write, BlockWrite, ReSet, Read, BlockRead... или API
p51x вне форума Ответить с цитированием
Старый 08.01.2011, 23:49   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

добавлю к словам p51x

через TFileStream тоже можно... (TFileStream.Read TFileStream.Write )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.01.2011, 00:03   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Сообщение от niki2012 Посмотреть сообщение
Необходимо сохранить массив байтов в файл
мы ж в винде, или где?

Код:
procedure saveBuf(buf: pointer; size: cardinal);
var
  h: tHandle;
  realSize: DWORD;
begin
  h := CreateFile(fileName, GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ, nil, CREATE_NEW, 0, 0);
  if (INVALID_HANDLE_VALUE <> h) then try
    WriteFile(h, buf, size, @realSize, nil);
  finally
    CloseHandle(h);
  end;
end;
Цитата:
Сообщение от niki2012 Посмотреть сообщение
вроде можно как-то в поток перегнать
угу.. и в поток, и в строку, и в XML и в картинку. Вопрос, зачем.

Цитата:
Сообщение от niki2012 Посмотреть сообщение
А еще плз подскажите как можно открыть exe'шник в массив байтов
Всё тоже самое, только всесто CREATE_NEW ставим OPEN_EXISTING и вместо WriteFile() вызываем ReadFile().
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 09.01.2011 в 00:05.
veniside вне форума Ответить с цитированием
Старый 09.01.2011, 03:45   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Код:
var
  A: array of Byte;
  FS: TFileStream;
begin
  // Сохранение:
  FS := TFileStream.Create('C:\1.exe', fmCreate);
  try
    if Length(A) > 0 then
      FS.WriteBuffer(Pointer(A)^, Length(A));
  finally
    FreeAndNil(FS);
  end; 

  // Загрузка:
  FS := TFileStream.Create('C:\1.exe', fmOpenRead);
  try
    SetLength(A, FS.Size);
    if FS.Size > 0 then
      FS.ReadBuffer(Pointer(A)^, FS.Size);
  finally
    FreeAndNil(FS);
  end; 
end;
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение массива в файл Дмитрий Стариков Общие вопросы Delphi 7 26.09.2010 19:51
Сохранение массива в excel файл ikostalker Общие вопросы Delphi 2 15.06.2010 11:01
сохранение динамического массива в файл пауэрлифтинг Общие вопросы Delphi 1 07.04.2010 00:02
Сохранение двумерного массива в файл AngelOfDeath Общие вопросы Delphi 5 04.10.2008 09:37
Сохранение массива в файл Artem Общие вопросы Delphi 10 11.12.2007 20:00