Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
14-1136071528
Yeg
2006-01-01 02:25
2006.01.22
Перезагрузка PocketPC (ASUS)


2-1136395174
ArtemESC
2006-01-04 20:19
2006.01.22
Прописать в реестре прогу.


4-1131643030
AlexOld
2005-11-10 20:17
2006.01.22
Добавить информацию в поток записи на диск


6-1128951451
pr0t0n
2005-10-10 17:37
2006.01.22
Здраствуйте мастера! Помогите пожалуйсто


2-1136659178
Revan
2006-01-07 21:39
2006.01.22
Опять RENDOMIZE




   Наверх