RAD Studio VCL Reference
|
Changes a file name.
function RenameFile(const OldName: string; const NewName: string): Boolean;
Boolean RenameFile(const AnsiString OldName, const AnsiString NewName);
RenameFile attempts to change the name of the file specified by OldFile to NewFile. If the operation succeeds, RenameFile returns true. If RenameFile cannot rename the file (for example, if the application does not have permission to modify the file), it returns false.
C++ Examples:
/* The following example uses a button, a string grid, and a Save dialog box on a form. When the button is clicked, the user is prompted for a filename. When the user clicks OK, the contents of the string grid are written to the specified file. Additional information is also written to the file so that it can be read easily with the FileRead function. Verify the file written after executing. */ #include <dir.h> void __fastcall TForm1::Button1Click(TObject *Sender) { char szFileName[MAXFILE+4]; int iFileHandle; int iLength; if (SaveDialog1->Execute()) { if (FileExists(SaveDialog1->FileName)) { fnsplit(AnsiString(SaveDialog1->FileName).c_str(), 0, 0, szFileName, 0); strcat(szFileName, ".BAK"); RenameFile(SaveDialog1->FileName, szFileName); } iFileHandle = FileCreate(SaveDialog1->FileName); // Write out the number of rows and columns in the grid. FileWrite(iFileHandle, reinterpret_cast<char *>(&(StringGrid1->ColCount)), sizeof(StringGrid1->ColCount)); FileWrite(iFileHandle, reinterpret_cast<char *>(&(StringGrid1->RowCount)), sizeof(StringGrid1->RowCount)); for (int x=0;x<StringGrid1->ColCount;x++) { for (int y=0;y<StringGrid1->RowCount;y++) { // Write out the length of each string, followed by the string itself. iLength = StringGrid1->Cells[x][y].Length(); FileWrite(iFileHandle, reinterpret_cast<char *>(&iLength), sizeof(iLength)); FileWrite(iFileHandle, StringGrid1->Cells[x][y].t_str(), StringGrid1->Cells[x][y].Length()); } } FileClose(iFileHandle); } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { StringGrid1->Cells[1][0] = "Column 1"; StringGrid1->Cells[2][0] = "Column 2"; StringGrid1->Cells[3][0] = "Column 3"; StringGrid1->Cells[4][0] = "Column 4"; StringGrid1->Cells[0][1] = "Row 1"; StringGrid1->Cells[1][1] = "Object"; StringGrid1->Cells[2][1] = "Pascal"; StringGrid1->Cells[3][1] = "is"; StringGrid1->Cells[4][1] = "excellent"; StringGrid1->Cells[0][2] = "Row 2"; StringGrid1->Cells[1][2] = "Delphi"; StringGrid1->Cells[2][2] = "is"; StringGrid1->Cells[4][2] = "RAD"; };
Delphi Examples:
{ The following example uses a button, a string grid, and a Save dialog box on a form. When the button is clicked, the user is prompted for a filename. When the user clicks OK, the contents of the string grid are written to the specified file. Additional information is also written to the file so that it can be read easily with the FileRead function. } procedure TForm1.Button1Click(Sender: TObject); var BackupName: string; FileHandle: Integer; StringLen: Integer; X, Y, I: Integer; colCountLength, rowCountLength: Integer; Buffer: PChar; cellString: string; begin if SaveDialog1.Execute then begin if FileExists(SaveDialog1.FileName) then begin BackupName := SysUtils.ExtractFileName(SaveDialog1.FileName); BackupName := ChangeFileExt(BackupName, '.BAK'); if not RenameFile(SaveDialog1.FileName, BackupName) then raise Exception.Create('Unable to create backup file.'); end; FileHandle := FileCreate(SaveDialog1.FileName); { Write out the number of rows and columns in the grid. } colCountLength := SizeOf(StringGrid1.ColCount); FileWrite(FileHandle, Pchar(StringGrid1.ColCount), colCountLength); rowCountLength := SizeOf(StringGrid1.RowCount); FileWrite(FileHandle, PChar(StringGrid1.RowCount), rowCountLength); for X := 0 to StringGrid1.ColCount - 1 do begin for Y := 0 to StringGrid1.RowCount - 1 do begin try { Write out the length of each string, followed by the string itself. } StringLen := Length(StringGrid1.Cells[X,Y]); FileWrite(FileHandle, PChar(StringLen), SizeOf(StringLen)); GetMem(Buffer, StringLen); { allocate the buffer } cellString := StringGrid1.Cells[X,Y]; for I := 1 to StringLen do Buffer[I - 1] := cellString[I]; FileWrite(FileHandle, Buffer^, StringLen); finally FreeMem(Buffer, StringLen); end; end; end; FileClose(FileHandle); end; end; procedure TForm1.FormCreate(Sender: TObject); begin with StringGrid1 do begin Cells[1,0] := 'Column 1'; Cells[2,0] := 'Column 2'; Cells[3,0] := 'Column 3'; Cells[4,0] := 'Column 4'; Cells[0,1] := 'Row 1'; Cells[1,1] := 'Object'; Cells[2,1] := 'Pascal'; Cells[3,1] := 'is'; Cells[4,1] := 'excellent'; Cells[0,2] := 'Row 2'; Cells[1,2] := 'Delphi'; Cells[2,2] := 'is'; Cells[4,2] := 'RAD'; end; end;
Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
|
What do you think about this topic? Send feedback!
|