DELPHI常用函数集及简要范例 3
来源:互联网 发布:js和jquery的事件区别 编辑:程序博客网 时间:2024/05/22 01:51
-----------------------------------------------------------------------------
DiskSize 磁碟机空间大小(Bytes)
-----------------------------------------------------------------------------
Unit SysUtils
函数原型 function DiskSize(Drive: Byte): Integer;
范例 var
S: string;
begin
S := IntToStr(DiskSize(0) div 1024) + ' Kbytes free.';
Label1.Caption:=S;
end;
说明 Drive
0=目前磁碟机,1=A磁碟机,2=B磁碟机....传回值若为-1,表示磁碟机侦测错误.
##DiskFree, DiskSize Example
-----------------------------------------------------------------------------
FileExists 判断档案是否存在.
-----------------------------------------------------------------------------
Unit SysUtils
函数原型 function FileExists(const FileName: string): Boolean;
类似 FileExists, RenameFile, FileCreate, FileWrite, FileClose, ExtractFileName Example
范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := 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. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount ? 1 do
begin
for Y := 0 to StringGrid1.RowCount ? 1 do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;
end;
##FileExists, DeleteFile Example
##FileExists, RenameFile, FileCreate, FileWrite, FileClose, ExtractFileName Example
-----------------------------------------------------------------------------
FileOpen 开档.
-----------------------------------------------------------------------------
Unit SysUtils
函数原型 function FileOpen(const FileName: string; Mode:
Integer):Integer;
**** 开档失败传回-1.
说明 以下有关档案读取都属低阶,如Dos Int 21h中有关档案的部
分.
fmOpenRead = $0000;
fmOpenWrite = $0001;
fmOpenReadWrite = $0002;
fmShareCompat = $0000;
fmShareExclusive = $0010;
fmShareDenyWrite = $0020;
fmShareDenyRead = $0030;
fmShareDenyNone = $0040;
fmOpenRead Open for read access only.
FmOpenWrite Open for write access only.
FmOpenReadWrite Open for read and write access.
fmShareCompat Compatible with the way FCBs are
opened.
fmShareExclusive Read and write access is denied.
fmShareDenyWrite Write access is denied.
fmShareDenyRead Read access is denied.
fmShareDenyNone Allows full access for others.
范例
procedure OpenForShare(const FileName: String);
var
FileHandle : Integer;
begin
FileHandle := FileOpen(FileName, fmOpenWrite or fmShareDenyNone);
if FileHandle > 0 then
{valid file handle}
else
{Open error: FileHandle = negative DOS error code}
end;
范例
procedure TForm1.Button1Click(Sender: TObject);
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer
begin
if OpenDialog1.Execute then
begin
try
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead = FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);
for i := 0 to iBytesRead-1 do
begin
StringGrid1.RowCount := StringGrid1.RowCount + 1;
StringGrid1.Cells[1,i+1] := Buffer[i];
StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
end;
finally
FreeMem(Buffer);
end;
end;
end;
##FileOpen, FileSeek, FileRead Example
-----------------------------------------------------------------------------
FileCreate 建档
-----------------------------------------------------------------------------
Unit SysUtils
函数原型 function FileCreate(const FileName: string): Integer;
范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := 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. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount ? 1 do
begin
for Y := 0 to StringGrid1.RowCount ? 1 do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;
end;
##FileExists, RenameFile, FileCreate, FileWrite, FileClose, ExtractFileName Example
-----------------------------------------------------------------------------
FileClose 关档
-----------------------------------------------------------------------------
Unit SysUtils
函数原型 procedure FileClose(Handle: Integer);
范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := 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. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount ? 1 do
begin
for Y := 0 to StringGrid1.RowCount ? 1 do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;
end;
发表看法 浏览:222 回复:0
DELPHI常用函数集及简要范例 (2) [2005-1-14]
File-management routines 档案管理常式
====================================
--------------------------------------------------------
ChangeFileExt 变更档案的副档名
--------------------------------------------------------
Unit SysUtils
函数原型 function ChangeFileExt(const FileName, Extension: string):
string;
范例 procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
P1:String;
P2:String;
begin
P1:='abc.txt';
P2:='.ini';
S := ChangeFileExt(P1,P2);
Label1.Caption:=S;
end;
结果 S== 'abc.ini'
P1:='abc'
P2:='.ini'
S== 'abc.ini'
P1:='c:/windows/abc.txt'
P2:='.ini'
S=='c:/windows/abc.ini'
P1:='abc.txt'
P2:='ini'
S=='abcini'
**注意:P2的第一位元必须有一点'.ini'
范例
procedure TForm1.ConvertIcon2BitmapClick(Sender: TObject);
var
s : string;
Icon: TIcon;
begin
OpenDialog1.DefaultExt := '.ICO';
OpenDialog1.Filter := 'icons (*.ico)|*.ICO';
OpenDialog1.Options := [ofOverwritePrompt, ofFileMustExist, ofHideReadOnly ];
if OpenDialog1.Execute then
begin
Icon := TIcon.Create;
try
Icon.Loadfromfile(OpenDialog1.FileName);
s:= ChangeFileExt(OpenDialog1.FileName,'.BMP');
Image1.Width := Icon.Width;
Image1.Height := Icon.Height;
Image1.Canvas.Draw(0,0,Icon);
Image1.Picture.SaveToFile(s);
ShowMessage(OpenDialog1.FileName + ' Saved to ' + s);
finally
Icon.Free;
end;
end;
end;
# SaveToFile, Create, Height, Width, Canvas, ChangeFileExt example
--------------------------------------------------------
ExpandFileName 将档案名称加在目前所在之路径全名之後
--------------------------------------------------------
Unit SysUtils
函数原型 function ExpandFileName(const FileName: string): string;
说明 设目前目录为 c:/windows 档案名称为 abc.txt
则结果为 c:/windows/abc.txt
**** 此函数并不是求abc.txt的所在路径.
范例 procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
begin
S:=ExpandFileName('abc.txt');
Label1.Caption:=S;
end;
范例
procedure TForm1.Button1Click(Sender: TObject)
begin
ListBox1.Items.Add(ExpandFileName(Edit1.Text));
end;
------------------------------------------------------------------
DirectoryExists 目录是否存在------------------------------------------------------------------
Unit
FileCtrl
uses FileCtrl;
procedure TForm1.Button1Click(Sender: TObject);
begin
if not DirectoryExists('c:/temp') then
if not CreateDir('C:/temp') then
raise Exception.Create('Cannot create c:/temp');
end;
--------------------------------------------------------
ForceDirectories 目录
---------------------------------------------------------
Unit FileCtrl
函数原型 function ForceDirectories(Dir: string): Boolean;
procedure TForm1.Button1Click(Sender: TObject);
var
Dir: string;
begin
Dir := 'C:/APPS/SALES/LOCAL';
if DirectoryExists(Dir) then
Label1.Caption := Dir + ' was created'
end;
--------------------------------------------------------
ExpandUNCFileName 同上(只是得到网路上的路径)
--------------------------------------------------------
Unit SysUtils
函数原型 function ExpandUNCFileName(const FileName: string):string;
ExtractFileDir 分析字串中的路径
Unit SysUtils
函数原型 function ExtractFileDir(const FileName: string): string;
说明 设S字串为 c:/windows/abc.txt
则结果为 c:/windows
**** 功能在於由任何部份传来的叁数,加以分析它的路径
范例 procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
P1:String;
begin
P1:='c:/windows/abc.txt';
S:=ExtractFileDir(P1);
Label1.Caption:=S;
end;
S=='c:/windows'
P1:='abc.txt'
S=='
P1:='c:abc.txt'
S=='c:'
P1:='c:/abc.txt'
S=='c:/'
--------------------------------------------------------
ExtractFileDrive 分析字串中的磁碟机名称
--------------------------------------------------------
Unit SysUtils
函数原型 function ExtractFileDrive(const FileName: string): string;
**** 功能同上,只是传回磁碟机名称.
范例 procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
P1:String;
begin
P1:='c:/windows/abc.txt';
S:=ExtractFileDrive(P1);
Label1.Caption:=S;
end;
S:='c:'
P1:='abc.txt'
S=='
--------------------------------------------------------
ExtractFileExt 分析字串中的档案名称的副档名
--------------------------------------------------------
Unit SysUtils
函数原型 function ExtractFileExt(const FileName: string): string;
范例 procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
P1:String;
begin
P1:='c:/windows/abc.txt';
S:=ExtractFileExt(P1);
Label1.Caption:=S;
end;
S=='.txt'
P1:='c:/windows/abc'
S=='
范例 MyFilesExtension := ExtractFileExt(MyFileName);
--------------------------------------------------------
ExtractFileName 分析字串中的档案名称(只传回档案名称)
--------------------------------------------------------
Unit SysUtils
函数原型 function ExtractFileName(const FileName: string): string;
范例 procedure TForm1.Button1Click(Sender: TObject);
var
S: String;
P1:String;
begin
P1:='c:/windows/abc.txt';
S:=ExtractFileName(P1);
Label1.Caption:=S;
end;
S=='abc.txt'
范例
procedure TForm1.Button1Click(Sender: TObject);
var
BackupName: string;
FileHandle: Integer;
StringLen: Integer;
X: Integer;
Y: Integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
begin
BackupName := 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. }
FileWrite(FileHandle,
StringGrid1.ColCount, SizeOf(StringGrid1.ColCount));
FileWrite(FileHandle,
StringGrid1.RowCount, SizeOf(StringGrid1.RowCount));
for X := 0 to StringGrid1.ColCount ? 1 do
begin
for Y := 0 to StringGrid1.RowCount ? 1 do
begin
{ Write out the length of each string, followed by the string itself. }
StringLen := Length(StringGrid1.Cells[X,Y]);
FileWrite(FileHandle, StringLen, SizeOf(StringLen));
FileWrite(FileHandle,
StringGrid1.Cells[X,Y], Length(StringGrid1.Cells[X,Y]);
end;
end;
FileClose(FileHandle);
end;
end;