Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: CL | DM;

Вниз

ФАЙЛЫ HELP!!   Найти похожие ветки 

 
Andron.Ru ©   (2005-12-20 13:22) [0]

Пытаюсь запихнуть в один файл несколько разных файлов... Причем формат файлов не должен играть никакой роли!! В чем ошибка ПОМОГИТЕ.... На Сях катит, а вот на Делфе нет.. Я думаю что все дело в работе с памятью... Заранее Спсб...

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

 type
 THdr = record
  offset : Cardinal;
  size : Cardinal;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  hdr : array [0..1] of THdr;
  sizeread : Cardinal;
  hfile1, map : HFile;
  content1, content2, ptr : Pointer;
begin
  hfile1 := CreateFile("c:\1.bmp", GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 hdr[0].size := GetFileSize(hfile1, nil);
  GetMem(content1, hdr[0].size);
 ReadFile(hfile1, content1, hdr[0].size, sizeread, nil);
  CloseHandle(hfile1);
 hdr[0].offset := sizeof(hdr);

  hfile1 := CreateFile("c:\1.txt", GENERIC_READ + GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 hdr[1].size := GetFileSize(hfile1, nil);
  GetMem(content2, hdr[1].size);
 ReadFile(hfile1, content2, hdr[1].size, sizeread, nil);
 CloseHandle(hfile1);
 hdr[1].offset := sizeof(hdr);

  hfile1 := CreateFile("c:\outfile.bin", GENERIC_READ + GENERIC_WRITE, 0, nil, CREATE_ALWAYS,
   FILE_ATTRIBUTE_NORMAL, 0);
 map := CreateFileMapping (hfile1, nil, PAGE_READWRITE, 0, hdr[1].offset + hdr[1].size, nil);
 ptr := MapViewOfFile(map, FILE_MAP_WRITE + FILE_MAP_READ, 0, 0, 0);
 CopyMemory(ptr, @hdr, sizeof(hdr));
  CopyMemory(Pointer(Cardinal(ptr) + hdr[0].offset), content1, hdr[0].size);
  CopyMemory(Pointer(Cardinal(ptr) + hdr[1].offset), content2, hdr[1].size);
 UnmapViewOfFile(ptr);
  CloseHandle(map);
  CloseHandle(hfile1);

FreeMem(content1, SizeOf(content1));
FreeMem(content2, SizeOf(content2));
end;

end.


 
Andron.Ru ©   (2005-12-20 13:25) [1]

Это просто для сравнения кода сей и делфей... Нужен именно такой алгоритм



Страницы: 1 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.047 c
2-1136394775
ArtemESC
2006-01-04 20:12
2006.01.22
Форма потеряла фокус...


2-1136637637
Начинающий5
2006-01-07 15:40
2006.01.22
Dbgrid


14-1135920690
WondeRu
2005-12-30 08:31
2006.01.22
Слышал что новая версия клиента к форуму появилась. Это правда?


1-1134642411
IceBeerg
2005-12-15 13:26
2006.01.22
Полупрозрачная форма и текст на ней.


14-1135344631
iamdanil
2005-12-23 16:30
2006.01.22
xpmanifest