tft每日頭條

 > 科技

 > 編程操作

編程操作

科技 更新时间:2025-01-29 06:25:27
3.文件編程

Delphi XE8中,文件包括:文本文件、有類型數據文件、無類型數據文件。這裡的文件僅指磁盤文件。我們會在接下來的章節中逐步探讨各種文件的操作。本節主要針對适用于所有文件的基本操作過程及函數進行介紹,主要包括:關聯文件、打開文件、關閉文件、删除文件等基本操作。

3.1關聯文件

關聯文件是指将文件變量與外部文件之間建立聯系,表示後面在程序中通過文件變量來對文件進行操作。關聯文件的過程定義格式:

procedure AssignFile(var F: File; FileName: String);

其中:

  • F - 表示文件變量,可以是各種類型的文件;
  • FileName - 字符串類型的變量,表示某個特定的文件名;

調用該過程時,如果文件名參數為空,文件變量将與标準輸入輸出文件建立關聯。對于已經打開的文件變量,不要再使用該過程調用。

3.2打開文件

要進行文件的讀寫操作必須先打開文件。

1.以讀方式打開文件

通過調用 Reset 過程打開一個已經存在的文件。格式:

procedure Reset(var F: File; [RecSize: Word]);

其中:

  • F - 表示文件變量;
  • RecSize - 記錄長度,當文件為無類型文件時才使用,指定數據傳送時的大小;

如果指定的文件不存在,會産生錯誤;如果文件已經打開,則會先關閉文件然後打開。

打開文件後,文件的操作位置設置在文件的開始。

如果文件是空文件,則 Eof(F) 返回值為 True,否則為 False。

2.以寫方式打開文件

通過調用 Rewrite 過程可創建并打開一個新文件。格式:

procedure Rewrite(var F: File; [RecSize: Word]);

參數同 Reset 過程。

如果存在一個同名的文件,則删除原文件後生成新的空文件;如果文件已經打開,則先關閉後重新創建。

打開文件後,文件的操作位置設置在文件的開始。

Eof(F) 返回值一定是 True。

3.3關閉文件

當對文件操作完成後,必須調用關閉文件的操作。關閉文件使用 CloseFile 過程,調用該過程後,文件變量與磁盤文件的關聯中斷。格式:

procedure CloseFile(var F: File);

調用該過程後,系統将釋放文件變量并關閉關聯的外部文件。

3.4删除文件

當需要删除一個文件時,可以調用 Erase 過程,格式:

procedure Erase(var F: File);

調用該過程将删除與文件變量 F 關聯的文件,在删除文件前會執行關閉文件的操作。

3.5文件的常用基本操作
  • 獲取最近一次IO操作的狀态值

function IOResult: Integer;

  • 文件重命名

procedure Rename(var F: File; NewName: String); procedure Rename(var F: File; NewName: PChar);

  • 切換當前目錄

procedure ChDir(s: Stirng);

  • 是否到文件末尾

function Eof(var F: File): Boolean; function Eof(var F: Text): Boolean;

  • 獲取驅動器的當前目錄

procedure GetDir(D: Byte; var S: String);

其中:D表示驅動器,取值為0,1,2,3...,分别代表A,B,C,D,...;

  • 删除目錄

procedure RmDir(s: Stirng);

  • 創建目錄

procedure MkDir(s: String);

  • 删除文件

function DeleteFile(const FileName:string):Boolean;

3.6文件編程示例

示例:編寫一個簡單的文件管理器,界面如下圖:

編程操作(9.鍵盤鼠标和文件編程)1

新建目錄界面:

編程操作(9.鍵盤鼠标和文件編程)2

重命名界面:

編程操作(9.鍵盤鼠标和文件編程)3

本例涉及三個窗體:

主窗體主要組件的屬性設置如下:

對象

屬性

屬性值

說明

DriveComboBox1

DirList

DirectoryListBox1

鍊接到DirectoryListBox1

DirectoryListBox1

FileList

FileListBox1

鍊接到FileListBox1

DirLabel

Label1

鍊接到Label

FilterComboBox1

FileList

FileListBox1

鍊接到FileListBox1

FileListBox1

MultiSelect

False

單選

Button1

Caption

新建目錄

标題

Button2

Caption

删除目錄

标題

Button3

Caption

删除文件

标題

Button4

Caption

重命名

标題

代碼如下:

主窗體代碼:

uses Unit2, Unit3; procedure TForm1.Button1Click(Sender: TObject); begin // 新建目錄 if Form2.ShowModal = mrOk then DirectoryListBox1.Update; end; procedure TForm1.Button2Click(Sender: TObject); var DirName: String; i: Integer; begin // 删除目錄 for i := 0 to DirectoryListBox1.Items.Count - 1 do begin if DirectoryListBox1.Selected[i] then begin DirName := DirectoryListBox1.Items.Strings[i]; RmDir(DirName); end; end; DirectoryListBox1.Update; end; procedure TForm1.Button3Click(Sender: TObject); var FileName: String; i: Integer; begin // 删除文件 for i := 0 to FileListBox1.Items.Count - 1 do begin if FileListBox1.Selected[i] then begin FileName := FileListBox1.Items.Strings[i]; FileName := DirectoryListBox1.Directory '\' FileName; DeleteFile(FileName); end; end; FileListBox1.Update; end; procedure TForm1.Button4Click(Sender: TObject); var FileName: String; i: Integer; begin // 重命名 for i := 0 to FileListBox1.Items.Count - 1 do begin if FileListBox1.Selected[i] then begin FileName := FileListBox1.Items.Strings[i]; end; end; if FileName <> '' then Form3.FileName := FileName; if Form3.ShowModal = mrOk then FileListBox1.Update; end;

新建目錄窗體代碼:

procedure TForm2.Button1Click(Sender: TObject); begin // 取消按鈕 ModalResult := mrCancel; end; procedure TForm2.Button2Click(Sender: TObject); begin // 确定按鈕,在當前目錄下創建目錄 if Edit1.Text = '' then ShowMessage('請輸入目錄名') else begin MkDir(Edit1.Text); ModalResult := mrOk; end; end;

重命名窗體代碼:

interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm3 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } FileName: String; end; var Form3: TForm3; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); begin // 取消 ModalResult := mrCancel; end; procedure TForm3.Button2Click(Sender: TObject); var F: File; begin // 确定 if Edit1.Text = '' then ShowMessage('請輸入新的文件名!') else begin AssignFile(F, FileName); Rename(F, Edit1.Text); end; ModalResult := mrOk; end;

在重命名窗體中,interface 部分類 TForm3 中定義了一個公共屬性:FileName: String; 用于在調用該窗體時傳遞要重命名的文件名,在主窗體中調用 TForm3 時的代碼:

Form3.FileName := FileName; if Form3.ShowModal = mrOk then FileListBox1.Update;

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved