Fájlok összefűzése Delphiben?
Adott egy .jpg fájl, és egy .txt fájl.
Hogyan tudom őket egy fájlba rakni delphiben?
(És azután szétszedni)
?
procedure TForm1.Osszefuzes(EgyikFile, MasikFile, Output:string);
var
File1, File2,
FileOut:file;
Buf:array[1..4096] of char; // A buffer elvileg akarmekkora is lehet
OlvasottBytetokSzama:integer;
FileMeret:integer;
c:integer;
begin
// Osszegzett file letrehozasa
AssignFile(FileOut, Output);
rewrite(FileOut, 1);
// Elso file megnyitasa
AssignFile(File1, EgyikFile);
reset(File1, 1);
EgyikFile:=ExtractFileName(EgyikFile);
// Masodik file megnyitasa
AssignFile(File2, MasikFile);
reset(File2, 1);
MasikFile:=ExtractFileName(MasikFile);
// Elso file nevenek eltarolasa (#0 karakterrel zarul)
for c:=1 to length(EgyikFile) do
Buf[c]:=EgyikFile[c];
Buf[length(EgyikFile) + 1]:=#0;
BlockWrite(FileOut, Buf, length(EgyikFile) + 1);
// Elso file meretenek eltarolasa
FileMeret:=FileSize(File1);
for c:=1 to 16 do
begin
Buf[c]:=char(FileMeret mod 256);
FileMeret:=FileMeret div 256;
end;
BlockWrite(FileOut, Buf, 16);
// Elso file eltarolasa
repeat
BlockRead(File1, Buf, SizeOf(Buf), OlvasottBytetokSzama);
BlockWrite(FileOut, Buf, OlvasottBytetokSzama);
until OlvasottBytetokSzama < SizeOf(Buf);
// Masodik file nevenek eltarolasa (#0 karakterrel zarul)
for c:=1 to length(MasikFile) do
Buf[c]:=MasikFile[c];
Buf[length(MasikFile) + 1]:=#0;
BlockWrite(FileOut, Buf, length(MasikFile) + 1);
// Masodik file meretenek eltarolasa
FileMeret:=FileSize(File2);
for c:=1 to 16 do
begin
Buf[c]:=char(FileMeret mod 256);
FileMeret:=FileMeret div 256;
end;
BlockWrite(FileOut, Buf, 16);
// Masodik file eltarolasa
repeat
BlockRead(File2, Buf, SizeOf(Buf), OlvasottBytetokSzama);
BlockWrite(FileOut, Buf, OlvasottBytetokSzama);
until OlvasottBytetokSzama < SizeOf(Buf);
CloseFile(FileOut);
CloseFile(File1);
CloseFile(File2);
end;
procedure Szetszedes(Input: string; outdir:string);
var
FileInp:file;
Fileout:file;
FileName:string;
FileMeret:integer;
Buf:array[1..4096] of char;
c:integer;
Szorzo:int64;
OlvasottByteokSzama:integer;
begin
// Osszefuzott file megnyitasa
AssignFile(FileInp, Input);
reset(FileInp, 1);
while not Eof(FileInp) do
begin
// File nev kiolvasasa
FileName:='';
repeat
BlockRead(FileInp, Buf, 1);
if Buf[1] <> #0 then
FileName:=FileName + Buf[1];
until Buf[1] = #0;
// Meret kiolvasasa
FileMeret:=0;
Szorzo:=1;
for c:=1 to 16 do
begin
BlockRead(FileInp, Buf, 1);
FileMeret:=FileMeret + (ord(Buf[1]) * Szorzo);
Szorzo:=Szorzo * 256;
end;
// Kibontando file letrehozasa
AssignFile(Fileout, outdir + FileName);
Rewrite(Fileout, 1);
// Kibontando file kibontasa
repeat
BlockRead(FileInp, Buf, min(FileMeret, SizeOf(Buf)), OlvasottByteokSzama);
BlockWrite(FileOut, Buf, OlvasottByteokSzama);
if FileMeret > SizeOf(Buf) then
FileMeret:=FileMeret - SizeOf(Buf);
until OlvasottByteokSzama < SizeOf(Buf);
// Kibontando file zarasa
CloseFile(Fileout);
end;
// osszegzett file zarasa
CloseFile(FileInp);
end;
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!