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

Вниз

помогите с Файлами!   Найти похожие ветки 

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

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


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

.............

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;
...........


 
MBo ©   (2005-12-20 14:04) [1]

ReadFile(hfile1,content1^


 
Andron.Ru ©   (2005-12-20 14:27) [2]

Спасибо понял..... Работает..
Тока еще одна ошибка была
Вот тут..

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);</CODE>

Не указал смещение!



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

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

Наверх




Память: 0.47 MB
Время: 0.018 c
2-1135237256
oleggar
2005-12-22 10:40
2006.01.08
время


9-1122848065
!Han!
2005-08-01 02:14
2006.01.08
Что такое Opengl?


14-1134623387
vitaliy14
2005-12-15 08:09
2006.01.08
"Клонирование" Битмэпа


14-1134483178
iamdanil
2005-12-13 17:12
2006.01.08
Для умных программистов


2-1134909472
з. танька
2005-12-18 15:37
2006.01.08
выгрузить картинку из имаги