Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

inserting a file into another file

Posted on 2002-04-19
9
Medium Priority
?
165 Views
Last Modified: 2010-04-04
hi,

i was wondering if this could be possible i have a temp.temp file as the file i want to store stuff in, but i want to put test.doc in there.

anyone know a way of inserting it in there and extracting it to a temp folder for accessing it.

cheers
0
Comment
Question by:classic_gaming
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +2
9 Comments
 
LVL 5

Expert Comment

by:Gwena
ID: 6954460
I am not certain what you want here..


Do you have a file on disk ...lets say it's temp.dat
and you want to be able to add other files to this file
and extract them later... like put test.doc in there and later pull it out and put it in another folder...or in a memstream or something??


This is pretty simple to do if this is what you need...
please explain what you want a little a little more :-)
0
 

Author Comment

by:classic_gaming
ID: 6954535
it's exactly how you described it.

i need to put a file into another file.
0
 
LVL 2

Expert Comment

by:freshman3k
ID: 6955251
Hello!

Check these components out(the are free with sources):
1)http://www.torry.net/vcl/filedrv/files/stuffit.zip
2)http://www.torry.net/vcl/filedrv/files/pakit.zip

Good Luck :-)
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 

Expert Comment

by:lottol
ID: 6955743
you can work  with your temp fils as zip archive, using for example TZipMaster component

Description of working with TZipMaster
http://www.latiumsoftware.com/en/pascal/0005.php3
0
 
LVL 5

Expert Comment

by:Gwena
ID: 6955770
Hi :-)

  Go to my website http://delphi.does.it

and check out the file called newdemo1.zip it contains a demo w/source that shows how to add files to an exe file at runtime... and later extract them to disk. You can do the same thing with any external file... adding files to it and then later extracting the individual files.

The file that you add other files to could be anything...exe,txt,mp3,pdf..whatever.  and remember that you can add your files to your exe if you wish :-)

If the demo looks like what you want to do using an external file then I can make a demo for that and send it to you :-)
0
 
LVL 17

Accepted Solution

by:
geobul earned 800 total points
ID: 6955986
Hi,

You can easily add one (only one) file to another and extract it later:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

// adds Source file to Dest file
procedure AddSecondFile(Source, Dest: string);
var
 NewFile: TFileStream;
 OldFile: TFileStream;
begin
 NewFile:=TFileStream.Create(Dest+':geobul', fmCreate);
 OldFile:=TFileStream.Create(Source, fmShareDenyNone);
 NewFile.CopyFrom(OldFile, OldFile.Size);
 FreeAndNil(OldFile);
 FreeAndNil(NewFile);
end;

// Extract second file to Dest file
procedure ExtractSecondFile(Source, Dest: string);
var
 NewFile: TFileStream;
 OldFile: TFileStream;
begin
 OldFile:=TFileStream.Create(Source+':geobul', fmShareDenyNone);
 NewFile:=TFileStream.Create(Dest, fmCreate);
 NewFile.CopyFrom(OldFile, OldFile.Size);
 FreeAndNil(OldFile);
 FreeAndNil(NewFile);
end;

// add 'c:\test2.txt' to 'c:\temp\test1.doc'
procedure TForm1.Button1Click(Sender: TObject);
begin
  AddSecondFile('c:\test2.txt','c:\temp\test1.doc');
end;

// extract the second file to another directory 'c:\temp\test2.txt'
procedure TForm1.Button2Click(Sender: TObject);
begin
  ExtractSecondFile('c:\temp\test1.doc','c:\temp\test2.txt');
end;

end.

Regards, Geo
0
 

Author Comment

by:classic_gaming
ID: 6956380
geobul thats perfect points to you :)

i wanted a non-component solution and you gave me the actual source way of doing it.

cheers
0
 

Author Comment

by:classic_gaming
ID: 6956502
hi,

could you modify that so it can do multiple files?

i'll throw in an extra 50points :)
0
 
LVL 17

Expert Comment

by:geobul
ID: 6962633
Hi,

Yes, the following does it. You have to remember which StreamName was used for each file. It could be the original filename (the second file here) or something else (the first file here):

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var
  ThirdFile:string = 'c:\test3.txt';

// adds Source file to Dest file
procedure AddSecondFile(Source, Dest, StreamName: string);
var
 NewFile: TFileStream;
 OldFile: TFileStream;
begin
 NewFile:=TFileStream.Create(Dest+':'+StreamName, fmCreate);
 OldFile:=TFileStream.Create(Source, fmShareDenyNone);
 NewFile.CopyFrom(OldFile, OldFile.Size);
 FreeAndNil(OldFile);
 FreeAndNil(NewFile);
end;

// Extract second file to Dest file
procedure ExtractSecondFile(Source, Dest, StreamName: string);
var
 NewFile: TFileStream;
 OldFile: TFileStream;
begin
 OldFile:=TFileStream.Create(Source+':'+StreamName, fmShareDenyNone);
 NewFile:=TFileStream.Create(Dest, fmCreate);
 NewFile.CopyFrom(OldFile, OldFile.Size);
 FreeAndNil(OldFile);
 FreeAndNil(NewFile);
end;

// add 'c:\test2.txt' to 'c:\temp\test1.doc'
procedure TForm1.Button1Click(Sender: TObject);
begin
  AddSecondFile('c:\test2.txt','c:\temp\test1.doc','file1');
end;

// extract the second file to another directory 'c:\temp\test2.txt'
procedure TForm1.Button2Click(Sender: TObject);
begin
  ExtractSecondFile('c:\temp\test1.doc','c:\temp\test2.txt','file1');
end;

// add 'c:\test3.txt' to 'c:\temp\test1.doc'
procedure TForm1.Button3Click(Sender: TObject);
begin
  AddSecondFile(ThirdFile,'c:\temp\test1.doc', ExtractFileName(ThirdFile));
end;

// extract the third file to another directory 'c:\temp\test3.txt'
procedure TForm1.Button4Click(Sender: TObject);
begin
   ExtractSecondFile('c:\temp\test1.doc','c:\temp\test3.txt',ExtractFileName(ThirdFile));
end;

end.

Regards, Geo
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…
Please read the paragraph below before following the instructions in the video — there are important caveats in the paragraph that I did not mention in the video. If your PaperPort 12 or PaperPort 14 is failing to start, or crashing, or hanging, …
Suggested Courses

618 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question