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
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
28. januar 2003 - 17:20
#1
Står din tvldpnt i din INTERFACE del i unit1? Det skal den nemli' :)
28. januar 2003 - 20:44
#2
Har du husket at inkludere unit 1 i unit2 Uses list.
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
28. januar 2003 - 23:29
#4
Men det jeg mener er at din type-erklæring står i interface delen - ikke implementation delen
28. januar 2003 - 23:55
#5
det gør det
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.
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.
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.
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.
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?
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
29. januar 2003 - 16:21
#12
ok
29. januar 2003 - 16:21
#13
host ...
Kurser inden for grundlæggende programmering