Avatar billede simsen Mester
04. september 2011 - 23:51 Der er 2 kommentarer og
1 løsning

Declare og bruge en Record

Hej,

Fuldstændig newbee spørgsmål (er lige gået igang med at læse en tutorial om Delphi)....

Jeg bruger Embarcadero RAD Studio 2010 (hvis det har noget at sige)

Jeg forsøger at deklarere en record og så bruge den i en button metode. Men den fejler og jeg kan ikke se, hvad jeg gør forkert ud af det, jeg har googlet mig til.

Min kode:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
    TEmployeeRecord = record
      FirstName : string;
      LastName : string;
    end;
  end;

var
  Form1: TForm1;
  //var ERRecord : TEmployeeRecord;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ERRecord : TEmployeeRecord;
begin
  //Something
  ERRecord.FirstName := 'Andy';
  ERRecord.LastName := 'Schmidt';
  Label1.Caption := ERRecord.FirstName;
end;

end.

Først brokker den sig over at jeg skriver følgende (at den forventer en kolon):
TEmployeeRecord = record

Hvis jeg så ændrer den til
TEmployeeRecord : record

så brokker den sig over, at constant eller type identifer er forventet i følgende linje:

ERRecord : TEmployeeRecord;

Den brokker sig også over manglende operator eller semicolon hvor jeg forsøger at definere recorden.

ERRecord.FirstName := 'Andy';

Så mit spørgsmål er.....Hvor skal jeg deklarere recorden (så den kan bruges i min Button1Click procedure) og er deklarationen ændret fra lighedstegn til kolon?

mvh
simsen :-)
Avatar billede kroning Nybegynder
05. september 2011 - 01:06 #1
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }

  public
    { Public declarations }
  end;

  TEmployeeRecord = record
    FirstName : string;
    LastName : string;
  end;


var
  Form1: TForm1;
  //var ERRecord : TEmployeeRecord;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  ERRecord : TEmployeeRecord;
begin
  //Something
  ERRecord.FirstName := 'Andy';
  ERRecord.LastName := 'Schmidt';
  Label1.Caption := ERRecord.FirstName;
end;

end.
Avatar billede simsen Mester
05. september 2011 - 08:45 #2
Tak for svar :-)

Vil du fortælle mig, hvorfor den skal udenfor private/public declarations?
Avatar billede kroning Nybegynder
05. september 2011 - 10:08 #3
Fordi man ikke kan deklarere en type inde i en type, private/public delen befinder sig jo inde i TForm1 type deklarationen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester