2013-04-23 1 views
0

J'ai eu un problème avec tableau et objet CORBA IDL Voici mon code:avec tableau et objet CORBA IDL

interface ISinhVien 
{ 
    SinhVien[] DocFile(in String filename); 
    void GhiFile(in SinhVien[] sv,in String filename); 
}; 

Et erreur quand je le compiler:

CORBA_SinhVien>idlj -fall SinhVienIDL.idl 
SinhVienIDL.idl (line 3): SinhVien is an undeclared type. 
     SinhVien[] DocFile(in String filename); 
     ^
SinhVienIDL.idl (line 3): Expected `<identifier>'; encountered `['. 
     SinhVien[] DocFile(in String filename); 
     ^
SinhVienIDL.idl (line 3): WARNING: Identifier `String' collides with a keyword; 
use an escaped identifier to ensure future compatibility. 
     SinhVien[] DocFile(in String filename); 
        ^
SinhVienIDL.idl (line 4): SinhVien is an undeclared type. 
     void GhiFile(in SinhVien[] sv,in String filename); 
         ^
SinhVienIDL.idl (line 4): Expected `<identifier>'; encountered `['. 
     void GhiFile(in SinhVien[] sv,in String filename); 
         ^
SinhVienIDL.idl (line 4): WARNING: Identifier `String' collides with a keyword; 
use an escaped identifier to ensure future compatibility. 
     void GhiFile(in SinhVien[] sv,in String filename); 

Quelqu'un aide moi, s'il te plait !!!!!!!!!!!!!!!!!!!!

Répondre

1

Le CORBA language specification ne permet pas le retour des tableaux de tout type, à moins qu'ils ne soient d'abord typedefed.

Vous avez 2 options disponibles ici - matrices fixes ou sequences - ce dernier est plus flexible, permettant à la taille du tableau d'être définie par le code d'implémentation.

interface SinhVien { 
    boolean someOperation(in long id); 
    // more operations 
}; 

typedef sequence<SinhVien> sinhviens; 


interface ISinhVien 
{ 
    sinhviens docFile(in string filename); 
    void ghiFile(in sinhviens sv, in string filename); 
}; 

En plus: Veillez à ne pas mélanger la syntaxe Java avec la syntaxe IDL: string apparaît comme tout minuscule.

+0

Je modifie le code suivre votre aide! ce code est édité: typedef sequence sinhviens; interface ISinhVien { \t sinHviens DocFile (dans le nom de fichier de la chaîne); \t void GhiFile (dans sinhviens sv, dans le nom de fichier string); } mais nous avons eu erreur: SinhVienIDL.idl (ligne 1): sinhvien est un type non déclaré. séquence typedef sinhviens; aidez-moi, s'il vous plaît !! –

+0

Comme l'erreur indique que vous devez définir le type 'SinhVien'. Cela peut être une 'interface' ou une' struct'. Vous pouvez le faire dans le même fichier IDL ou en utilisant une directive '# include ' – Reimeus

+0

vous pouvez expliquer les détails pour moi? Je suis un nouveau départ –