【问题标题】:Delphi Display Records [closed]德尔福显示记录[关闭]
【发布时间】:2017-03-15 02:54:26
【问题描述】:

我能够创建一个名为 speeding.dat 的文件来记录警方测速摄像头记录的罚款信息。包含日期、车辆编号、速度和欠款等信息。但是我不知道如何开发一个子程序,它可以通过提示用户输入车辆登记号并显示该记录中的所有数据来查询文件。

这就是我目前所拥有的......

unit Main;

interface

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

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

var
  Form4: TForm4;
      type
    Tfine = Record
      name : string[15];
      money : String[15];
      date : String[15];
      speed : String[15];
      registration : string[15];
  end;


implementation

{$R *.dfm}


procedure TForm4.FormCreate(Sender: TObject);
var
  myFile   : File of Tfine;
  policeCamera : Tfine;
begin
  AssignFile(myFile, 'speeding.dat');
  ReWrite(myFile);

  policeCamera.name := 'aaa';
  policeCamera.money  := '299.99';
  policeCamera.registration := '123SPY';
  policeCamera.speed := '140';
  policeCamera.Date := '12/01/2001';
    Write(myFile,policeCamera);

  policeCamera.name := 'bbb';
  policeCamera.money  := '299.99';
  policeCamera.registration := 'HELLA';
  policeCamera.speed := '135';
  policeCamera.Date := '12/01/2002';
    Write(myFile,policeCamera);

  policeCamera.name := 'ccc';
  policeCamera.money  := '299.97';
  policeCamera.registration := 'HELLI';
  policeCamera.speed := '145';
  policeCamera.Date := '12/01/2003';
    Write(myFile,policeCamera);

  policeCamera.name := 'ddd';
  policeCamera.money  := '299.96';
  policeCamera.registration := 'HELLL';
  policeCamera.speed := '200';
  policeCamera.Date := '12/01/2004';
    Write(myFile,policeCamera);

  policeCamera.name := 'eee';
  policeCamera.money  := '399.95';
  policeCamera.registration := 'HELLP';
  policeCamera.speed := '310';
  policeCamera.Date := '12/01/2005';
    Write(myFile,policeCamera);

  policeCamera.name := 'fff';
  policeCamera.money  := '199.94';
  policeCamera.registration := 'HELLT';
  policeCamera.speed := '70';
  policeCamera.Date := '12/01/2006';
  Write(myFile,policeCamera);

  CloseFile(myFile);
end;

end.

【问题讨论】:

  • 到目前为止,您的目标一无所获。你有什么问题?
  • 所以我制作了一个主表单,用于存储记录并制作了一个按钮,将您带到另一个表单,您可以在其中搜索注册号。我不知道如何将主表单中的记录连接到我可以搜索的表单。
  • 首先您没有向我们展示您尝试的内容,其次您可以在使用While loop 在您的文件中搜索后使用TStringGrid 显示您的数据。这是一个提示。

标签: delphi


【解决方案1】:

你想通过车牌号搜索records并显示,试试这个:

Var List : TStringGrid; I : Integer;
    myFile   : File of Tfine;
    policeCamera : Tfine;
    Search : String[15];
begin
List := FindComponent('List') as TStringGrid;
List.Free;
Search := InputBox('Type the registration number:' , 'Search' , '');
 List := TStringGrid.Create(Self);
 With List do
  begin
    Align := alLeft;
    Name := 'List';
    Width := 120*5+20;
    FixedCols :=0;
    FixedRows := 1;
    DefaultColWidth := 120;
    ColCount := 5;
    Parent := Self;
  end;

  List.Cells [0,0] := 'Name';
  List.Cells [1,0] := 'Money';
  List.Cells [2,0] := 'Registration';
  List.Cells [3,0] := 'Speed';
  List.Cells [4,0] := 'Date';
  i := 1;
  AssignFile(myFile , 'speeding.dat');
  Reset(myFile);
  While FilePos(myFile) <> FileSize(myFile) do
    begin
      Read(myFile,policeCamera);
     if policeCamera.registration = Search then
      begin
        List.Cells[0,i] := policeCamera.name;
        List.Cells[1,i] := policeCamera.money;
        List.Cells[2,i] := policeCamera.date;
        List.Cells[3,i] := policeCamera.speed;
        List.Cells[4,i] := policeCamera.registration;
        Inc(i);
      end;
    end;
CloseFile(myFile);
end;

【讨论】:

  • 非常感谢,我能够理解您的所作所为,并将其用于解决我遇到的其他 3 个问题。
猜你喜欢
  • 1970-01-01
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多