ExeName (C++)

From RAD Studio Code Examples
Jump to: navigation, search

Description

This example copies a specified old file to a new file. Add a TSaveDialog to the form. Also, add two TEdits, two TLabels, and a TButton with the OnClick event named Save1Click. Change the Old Path and New Path to move files outside the Debug directory; Old File and New File will not take a relative path.


Code

#include <memory>       //For STL auto_ptr class

void __fastcall TForm1::Save1Click(TObject *Sender)
{
  String temp1 = Edit4->Text;
  String temp2 = ExtractFileName(Edit1->Text);
  String NewFileName = temp1 + temp2;
  String OldFileName =
	Edit3->Text + ExtractFileName(Edit2->Text);
  String Msg = Format("Copy %s to %s", ARRAYOFCONST((OldFileName, NewFileName)));
  if (MessageDlg(Msg, mtCustom, TMsgDlgButtons() << mbOK << mbCancel, 0) == mrOk)
  {
	std::auto_ptr<TFileStream> OldFile(new TFileStream(OldFileName, fmOpenRead | fmShareDenyWrite));
	std::auto_ptr<TFileStream> NewFile(new TFileStream(NewFileName, fmCreate | fmShareDenyRead));
	NewFile->CopyFrom(OldFile.get(), OldFile->Size);
  }
}

__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
  Edit3->Text = ExtractFilePath(Application->ExeName);
  Edit4->Text = Edit3->Text;
}

Uses