![]() |
|
|
#1
|
|||
|
|||
|
Всем привет!!! У меня такая проблемма вернее их даже 3 надеюсь поможите или дадите совет. Так вот написал я функцию записи нескольких файлов разных форматов в один и запихнул её в dll вот эта функция:
Код:
function WriteBase(ListBox: TListBox; OutFile: String): Boolean;
var
I: Integer;
begin
try
Memory := TMemoryStream.Create;
for I := 0 to ListBox.Count - 1 do
begin
InputFile := TFileStream.Create(ListBox.Items.Strings[i], fmOpenRead);
Memory.Seek(0, soFromEnd);
Memory.CopyFrom(InputFile, InputFile.Size);
InputFile.Free;
end;
finally
Memory.SaveToFile(OutFile);
Memory.Free;
Result := True;
end;
end; тут вроде всё просто список файлов берётся с ListBoxа затем поочереди файлы открываются для чтения и копируются в память затем содержимое памяти сохраняется в файл. И так вопросы после сохранения памити выводится такая фигня "Project D:\Программирование\Маiп Project [Delphi]\Write_basefile.exe faulted with message: "access violation at 0x003359b1: write of address 0x00030d04l. Process Stopped. Use Step or Run to continue." хотелось бы знать что это за ошибка ипочему она возникает? Второй вопрос как в этот же файл сохранить ещё и текст скажем из Мемо? И третий вопрос вот если я не ошибаюсь функция чтения этого файла должна иметь такой вид [позиция чтения] [колличество байт которые будут считываться] [файл куда это будет сохранено] Пример! Записали в файл 3 изображения. Теперь изображение 2 необходимо вытащить из этого файла как узнать позицию с которой начинается 2е изображение и скалько байт должно быть прочитанно. как это узнать. заранее благодарен всем. Также хотклось бы прочитать ваши комментарии по моей функции плохие и хорошие. ![]() Последний раз редактировалось Admin, 14.10.2010 в 21:05. |