Bonjour,

je voudrais passer en paramètre d'une procédure, un tableau de string assez complexe ( Array[1..30,1..8,1..3,1..3,1..10] of string ). Mais voilà, la procédure qui rempli ce tableau est dans une unité externe et j'obtiens l'erreur suivante à la compilation :

[Error] Main.pas(658): Incompatible types: 'Unit2.TCliarray' and 'Main.TCliArray';

Je comprends bien l'erreur, mais je ne vois comment contourner le problème ?

Voici le code (simplifié à l'extreme) de l'unité principale :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
unit Main;
 
interface
 
uses
  Windows, Dialogs, Messages, SysUtils, Classes, Controls, Forms, Unit2;
type
  TCliarray = Array[1..30,1..8,1..3,1..3,1..10] of string;
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Clidata : TCliarray;
 
implementation
 
procedure P_init;
begin
  Fill_Data_Array(CliData);
end;  
 
end.
et celui de l'unité externe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
unit Unit2;
 
interface
 
type
  TCliarray = Array[1..30,1..8,1..3,1..3,1..10] of string;
 
procedure Fill_Data_Array(data_array: TCliArray);
 
implementation
procedure Fill_Data_Array(data_array: TCliArray);
begin
 
.
.
.
.
end;
 
end.