Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизОбьединит файлы Найти похожие ветки
← →
Oleg_teacher © (2007-04-27 20:06) [0]как можна обьединить несколько файла в один с не текстовой информацыей
← →
Desdechado © (2007-04-27 20:42) [1]copy 1.zip + 2.jpg 3.smth
← →
Alx2 © (2007-04-28 01:10) [2]copy /b 1.zip + 2.jpg 3.smth
← →
Fredy314 © (2007-04-28 08:59) [3]а если так
rar a 3.zip 1.zip 2.txt
то потом можно будет раз"единить обратно
← →
Novice (2007-04-28 09:21) [4]способ 1:
var
f1, f2: file;
xfer: Word;
buf: PChar;
begin
AssignFile(f1, name1);
Reset(f1);
Seek(f1, Filesize(f1));
AssignFile(f2, name2);
Reset(f2);
GetMem(buf, 65000);
repeat
BlockRead(f1, buf^, 65000, xfer);
BlockWrite(f2, buf^, xfer);
until
xfer < 65000;
CloseFile(f1);
CloseFile(f2);
end;
способ 2:
Procedure TForm1.ThisISHowIPutFilesIn ;
var
ABigFileStream, SomeSmallFiles : TMemoryStream ;
begin
ABigFileStream := TMemoryStream.Create ;
try
SomeSmallFiles := TMemoryStream.Create ;
try
SomeSmallFiles.LoadFromFile("C:\SomeSmalFile1.txt");
AddToStream(SomeSmallFiles,ABigFileStream);
SomeSmallFiles.LoadFromFile("C:\SomeSmalFile2.txt");
AddToStream(SomeSmallFiles,ABigFileStream);
// enz
finally
SomeSmallFiles.Free ;
end;
ABigFileStream.SaveToFile("C:\MrBig.DDD")
finally
ABigFileStream.free ;
end;
end;
Procedure TForm1.ThisISHowIGetStufOut ;
var
ABigFileStream, SomeSmallFiles : TMemoryStream ;
begin
ABigFileStream := TMemoryStream.Create ;
try
ABigFileStream.LoadFromFile("C:\MrBig.DDD");
SomeSmallFiles := TMemoryStream.Create ;
try
GetFromStream(ABigFileStream,SomeSmallFiles,0);
SomeSmallFiles.SaveToFile("C:\SomeSmalFile1.txt");
GetFromStream(ABigFileStream,SomeSmallFiles,1);
SomeSmallFiles.SaveToFile("C:\SomeSmalFile2.txt");
// и т.д.
finally
SomeSmallFiles.Free ;
end;
finally
ABigFileStream.free ;
end;
end;
Procedure TForm1.AddToStream ( Source , Dest : TStream );
var
Size : Integer ;
begin
Source.position := 0 ;
// Сохраняем размер, помещая его в первый байт
Size := Source.Size ;
Dest.Write(Size,SizeOf(Integer));
Dest.CopyFrom(Source,Source.size);
end;
Procedure TForm1.GetFromStream ( Source , Dest : TStream ; Index : Integer );
Var
Size , I : Integer ;
begin
Source.Position := 0 ;
For i := 0 to index-1 do
begin
Source.Read(Size,SizeOf(Integer));
Source.Position := Source.Position + Size ;
end;
// Если марк¸р в файле равен размеру, то что-то пошло не так :(
if Source.position = Source.Size then
Raise EAccessViolation.Create("Index Out Of Bounds") ;
// Получаем желаемый размер файла
Source.Read(Size,SizeOf(Integer));
// Очищаем буфер у Dest
Dest.Position := 0 ;
Dest.Size := 0 ;
Dest.CopyFrom(Source,Size);
end;
(с) DelphiWorld - и вопросов будет меньше.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c