Thanx
Dit werkt, maar nu zit ik weer met een ander probleem.
Ik heb een programma met twee aparte componenten. De componenten hebben allebei een procedure die een 2 dim array mee krijgt als parameter. De 2 dim array wordt aangemaakt in de applicatie en roept de twee functie's aan in de componenten, maar dan komt het probleem. Ik kan niet allebei de procedures gebruiken, omdat de types niet gelijk zijn.
component 1:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| unit Comptest1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TMap = array of array of integer;
TComptest1 = class(TComponent)
public
Procedure Test(var Map:TMap);
end;
procedure Register;
implementation
procedure TComptest1.Test(var Map:TMap);
var i,i1:integer;
begin
for i:=1 to 100 do
for i1:=1 to 100 do
Map[i,i1]:=6;
end;
procedure Register;
begin
RegisterComponents('Opengl', [TComptest1]);
end;
end. |
component 2:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| unit Comptest2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TMap = array of array of integer;
TComptest2 = class(TComponent)
public
Procedure Test(var Map:TMap);
end;
procedure Register;
implementation
procedure TComptest2.Test(var Map:TMap);
var i,i1:integer;
begin
for i:=1 to 100 do
for i1:=1 to 100 do
Map[i,i1]:=6;
end;
procedure Register;
begin
RegisterComponents('Opengl', [TComptest1]);
end;
end. |
Programma
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,Comptest1,Comptest2;
type
TMap = array of array of integer;
TForm1 = class(TForm)
private
Map: TMap;
public
Comptest11:Comptest1;
Comptest21:Comptest2;
procedure test();
end;
var
Form1: TForm1;
implementation
procedure TForm1.test();
begin
setlength(Map,100,100);
Comptest11.test(@Map);
Comptest21.test(@Map);
end;
{$R *.DFM}
end. |
Foutmelding:
[Error] Unit1.pas(30): Types of actual and formal var parameters must be identical