French Comment lire un fichier de données en B4A

lemoum

New Member
Licensed User
Bonjour,
Je dois transposer en B4A le bout de programme VB6 suivant :
Prog VB6 :

Type struct_tableau_alti_zones
x As Long
y As Long
Z As Integer
Zone As Byte
End Type
Global Tableau_Alti_Zones(572271) As struct_tableau_alti_zones

Private Sub Lecture_Fic_Alti_Zones()
Dim F As Integer

F = FreeFile
Open App.Path & "\Fic_Alti_Zones.mnt" For Binary As F
Get #F, , Tableau_Alti_Zones
Close F

End Sub

Fic_Alti_Zones.mnt est un fichier contenant toute la structure Tableau_Alti_Zones

---------------------------

J'ai voulu transposer cela en B4A de la façon suivante :
Prog B4A :

Type struct_tableau_alti_zones (x As Long, y As Long, Z As Int, Zone As Byte)
Dim Tableau_Alti_Zones(572271) As struct_tableau_alti_zones
Dim Fichier As String

Fichier = "fic_alti_zones.mnt"
File.OpenInput(File.DirAssets,Fichier)
Tableau_Alti_Zones(0) = File.ReadMap(File.DirAssets,Fichier)

A la compil je reçois le message suivant :
Compiling generated Java code. Error
B4A line: 49
Tableau_Alti_Zones = File.ReadMap(File.DirAssets,Fichier)
javac 1.7.0_03
src\jnm\vol_gps_s3\main.java:272: error: inconvertible types
mostCurrent._tableau_alti_zones = (main._struct_tableau_alti_zones[])(anywheresoftware.b4a.keywords.Common.File.ReadMap(anywheresoftware.b4a.keywords.Common.File.getDirAssets(),mostCurrent._fichier).getObject());
^
required: _struct_tableau_alti_zones[]
found: MyMap
1 error

Idem pour : Tableau_Alti_Zones = File.ReadMap(File.DirAssets,Fichier)

Le fichier "fic_alti_zones.mnt" se trouve, bien entendu, dans le sous-repertoire Files du projet

Je suis en partie chauve et j'aimerais garder le peu de cheveux qui me restent.

Comment faire pour lire mon fichier .mnt et le charger dans la structure Tableau_Alti_Zones ?

Merci de votre aide

Jean-Noël un bon programmeur VB6 désorienté en V4B
 

logemag

Member
Licensed User
Bonjour Jean-Noël et bienvenue, je pense que ton problème vient de la fonction File.ReadMap, en B4A une map est constitué de 2 opérandes, une clef et une valeur... Dans ton cas le type de ta structure comporte 4 opérandes...

Essaie plutôt de voir comment réagit ton fichier lu en readlist, puis il te suffira d'extraire chaque champs de la liste ensuite, soit par une boucle step, soit par un formatage string... Désolé j'ai pas le temps de mieux t'expliquer. Sinon poste ton fichier "fic_alti_zones.mnt" dans ce poste, on verra comment faire.
 

Informatix

Expert
Licensed User
ReadMap renvoie un objet de type Map. Cela étant dit, comme ReadMap et ReadList ne savent pas lire correctement les types personnalisés, ce n'est pas sûr que tu puisses utiliser une Map dans ton cas pour récupérer le contenu.
Le plus sûr est toujours la bonne vieille méthode de la boucle qui écrit ou lit les données dans un fichier texte (ou mieux dans une base de données).
 
Top