Главная страница
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.013 c
2-1135153839
nirvana
2005-12-21 11:30
2006.01.08
Защита базы данных


8-1122757793
ASDQWE
2005-07-31 01:09
2006.01.08
Есть ли в delphi 7 что-то типа sound,delay,nosound как turbo pasc


4-1131179027
Yus
2005-11-05 11:23
2006.01.08
FileTimeToDosDateTime


1-1133976207
De1uxe
2005-12-07 20:23
2006.01.08
Ошибка в коде


11-1116766525
YaricZ Zalomov
2005-05-22 16:55
2006.01.08
Доолнительные компоненты