Avatar billede kfz Nybegynder
28. januar 2003 - 17:09 Der er 11 kommentarer og
2 løsninger

brug af record i anden unit

jeg har følgende record i unit 1:

tvldpnt = record
valid: boolean;
pos: tpoint;
end;

i unit 2 har jeg en procedure hvor parameteren skal være af typen tvldpnt, men delphi kan hverken finde typen hvis jeg skriver unit1.tvldpnt eller tvldpnt.

haster meget
Avatar billede erikjacobsen Ekspert
28. januar 2003 - 17:20 #1
Står din tvldpnt i din INTERFACE del i unit1? Det skal den nemli' :)
Avatar billede lanstorp Nybegynder
28. januar 2003 - 20:44 #2
Har du husket at inkludere unit 1 i unit2 Uses list.
Avatar billede kfz Nybegynder
28. januar 2003 - 23:22 #3
erikjacobsen>>nej, men unit 1 kan ikke finde deklerationerne hvis de står under interface, så de står under type

lanstorp>>>Ja
Avatar billede erikjacobsen Ekspert
28. januar 2003 - 23:29 #4
Men det jeg mener er at din type-erklæring står i
interface delen - ikke implementation delen
Avatar billede kfz Nybegynder
28. januar 2003 - 23:55 #5
det gør det
Avatar billede hreiff Nybegynder
29. januar 2003 - 07:18 #6
Det her virker fint:

(********************************)

unit Unit2;

interface

Uses
  wintypes; {indeholder TPoint}

type
  tvldpnt = record
              valid: boolean;
              pos: tpoint;
            end;

implementation

end.

(*******************************)

unit Unit1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,
  Controls, Forms, Dialogs, Unit2, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var
  a: tvldpnt;

procedure TForm1.FormCreate(Sender: TObject);
begin
  a.valid := true;
  a.pos.x := 3;
  a.pos.y := 5;
end;

end.
Avatar billede kfz Nybegynder
29. januar 2003 - 07:46 #7
hreiff>>>det ved jeg godt, men jeg skal bruge tvldpnt som en parameter.

i stedet for procedure TForm1.FormCreate(Sender: TObject);
tform1.getvalidpoints(validpoint: tvldpnt);

det er det som ikke virker.
Avatar billede hreiff Nybegynder
29. januar 2003 - 07:57 #8
Det her virker da også: (samme unit2)

unit Unit1;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Unit2, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var
  a: tvldpnt;

Procedure GetValidPoints(var Validpoint: tvldpnt);
begin
  if ((Validpoint.pos.x > 0) and (Validpoint.pos.y > 0 )) then
    Validpoint.valid := true
  else
    Validpoint.valid := false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  a.pos.x := 3;
  a.pos.y := 5;
  GetValidPoints(a);
  if a.valid then label1.caption := 'Ok'
  else label1.caption := 'Fejl';
end;

end.
Avatar billede hreiff Nybegynder
29. januar 2003 - 08:01 #9
Eller hvis du vil have funktionen over i Unit2:

unit Unit2;

interface

Uses
  wintypes;

type
  tvldpnt = record
              valid: boolean;
              pos: tpoint;
            end;

  Procedure GetValidPoints(var Validpoint: tvldpnt);

implementation

Procedure GetValidPoints(var Validpoint: tvldpnt);
begin
  if ((Validpoint.pos.x > 0) and (Validpoint.pos.y > 0 )) then
    Validpoint.valid := true
  else
    Validpoint.valid := false;
end;

end.
Avatar billede erikjacobsen Ekspert
29. januar 2003 - 08:58 #10
Nu har vi så prøvet at hjælpe dig i blinde.
Var det ikke en idé at du viste os den kode,
der ikke virker?
Avatar billede kfz Nybegynder
29. januar 2003 - 14:57 #11
har fundet løsningen unit2 skulle erklæres 1 første uses-afsnit og ikke det delphi selv opretter hvis du bruger unit2

hreiff>>du får points, jeg skal bare lige se om lanstorp lægger et svar
lanstorp>>læg et svar så får du også nogle points
Avatar billede lanstorp Nybegynder
29. januar 2003 - 16:21 #12
ok
Avatar billede lanstorp Nybegynder
29. januar 2003 - 16:21 #13
host ...
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