Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1306 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Passage d'un tableau de string vers du code non managé (DLL)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passage d'un tableau de string vers du code non managé (DLL)

n°896340
oliv5
Pourquoi ? Parce que !
Posté le 11-11-2004 à 20:57:14  profilanswer
 

Salut tlm.
 
Dans mon code c#, je obligé de faire appel a une fonction contenue dans une DLL. Cette fonction doit retourner un tableau de chaines de caracteres, dont le nombre est à priori inconnu, de meme que la taille des chaines retournées.
 
J'ai de gros problèmes à faire passer un tableau de string c# du code managé au code non managé, et vice-versa.  
Le bout de code suivant fonctionne, mais n'est pas beau et pas pratique du tout.
 

Code :
  1. [System.Runtime.InteropServices.DllImportAttribute("AppInfo.dll" )]
  2. public static extern int GetFileNames([In, Out] string[] buffer,int maxFileNameSize,int maxFileNames);
  3. public string[] GetFileNames()
  4. {
  5. string[] fileNames=new string[MAX_FILES_RETREIVED];
  6. for(int i=0;i<fileNames.Length;i++) fileNames=new string('a',MAX_FILES_LENGTH);
  7. int nbFiles=ScireFunctions.GetFileHandles(fileNames,MAX_FILES_LENGTH,fileNames.Length);
  8. for(int i=nbFiles;i<fileNames.Length;i++) fileNames[i]=null;
  9. return fileNames;
  10. }


 
L'entete de la fonction est le suivant :

Code :
  1. INT GetLocalFiles(TCHAR** fileNames, int maxFileNameSize, int maxFilesNb);


 
Comme vous pouvez le constater, la fonction managée [i]GetFileNames créé un tableau de strings (déjà initialisées et contenant une chaine de caractère de taille maximale autorisée), l'envoie à la fonction Win32 de la DLL, avec en argument le nombre de cases dans le tableau et la taille maximale autortisée pour les chaines. Le retour me donne le nombre de chaines inscrites dans le tableau.
 
L'inconvénient, c'est qu'au retour de la fonction, je doit vider a la main les chaines de caractères présentes mais inutiles (index > index retourné). J'ai un tableau a moitié vide, pas pratique a utiliser.
 
 
 
Ma question est la suivante : existe-t-il une autre solution pour récupérer un tableau de chaines de caractères à partir d'un code non managé ? (je précise que le tableau ner contient des données interessantes qu'au retour de la fonction et non à l'appel)
 
Edit : titre pourri


Message édité par oliv5 le 11-11-2004 à 21:15:25
mood
Publicité
Posté le 11-11-2004 à 20:57:14  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Passage d'un tableau de string vers du code non managé (DLL)

 

Sujets relatifs
PHP + passage de parametretableau a double entrée en pascal
tableau fixe sur l'écran[ASP] Pas de code sources en clair sur le serveur web ?
[JS] Code erroné?Transformer un int en String d'une taille spécifique
[C/C++] tableau dynamiqueProbleme de DLL...
Concaténer un char à la suite d'une string[C] Compiler un code C (from linux) avec un compiler win
Plus de sujets relatifs à : Passage d'un tableau de string vers du code non managé (DLL)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR