Page 1 sur 1
[R] Convertion poi format ov2 vers tableau
Posté : sam. 22 mai 2010 16:47
par pierrotm777
Bonjour,
J'ai trouvé sur le forum autoit un script permettant de reformatter un fichier poi au format ov2 (tomtom) vers un tableau.
Pour une raison X , le tableau ne se rempli pas .
► Afficher le texte
Code : Tout sélectionner
#include<GUIConstants.au3>
#include<Array.au3>
#include<GuiListView.au3>
$sFilename = FileOpenDialog("Select .ov2 file...", @ScriptDir, "ov2 files (*.ov2)", 1)
$hFile = FileOpen($sFilename, 16)
$i = 0
$iPOI = 0
$str = ""
Do
$type = FileRead($hFile, 1)
If @error Then ExitLoop
$type = Int($type)
Switch $type
Case 0, 3
$len = Dec(Hex(ByteSwap(FileRead($hFile, 4))))
FileRead($hFile, $len-5)
Case 1
FileRead($hFile, 20)
Case 2
$len = Dec(Hex(ByteSwap(FileRead($hFile, 4)))) - 14
$lon = Dec(Hex(ByteSwap(FileRead($hFile, 4)))) / 100000
$lat = Dec(Hex(ByteSwap(FileRead($hFile, 4)))) / 100000
$data = BinaryToString(FileRead($hFile, $len))
FileRead($hFile, 1)
$iPOI += 1
$str &= $type & "|" & $lon & "|" & $lat & "|" & $data & @CRLF
Case Else
MsgBox(0,"Error", "Unknown OV2 type encountered." & @CRLF & "File reading terminated.")
ExitLoop
EndSwitch
Until 0
FileClose($hFile)
;GUI listview with sortable columns
GUICreate("Simple POIs in this file: " & $iPOI, 500,500)
$listview = GUICtrlCreateListView("Type|Longitude|Latitude|Description", 0,0, 500,500)
_GUICtrlListView_SetColumnWidth($listview, 3, 320)
$aPOIs = StringSplit(StringTrimRight($str, 2), @CRLF, 1)
For $i = 1 to $aPOIs[0]
_GUICtrlListView_InsertItem($listview, -1, $aPOIs[$i])
Next
Dim $B_DESCENDING[_GUICtrlListView_GetColumnCount($listview)]
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $listview
_GUICtrlListView_SimpleSort($listview, $B_DESCENDING, GUICtrlGetState($listview))
EndSwitch
WEnd
Func ByteSwap($bin)
Return Binary(BitOr(String($bin), 0))
EndFunc
Auriez vous une idée svp.
Je joins un fichier ov2 au script .
Merci de votre aide
Re: [..]Convertion poi format ov2 vers tableau
Posté : sam. 22 mai 2010 21:04
par SagePourpre
pierrotm777 a écrit :Bonjour,
For $i = 1 to $aPOIs[0]
_GUICtrlListView_InsertItem($listview, -1, $aPOIs[$i])
Next
Au contraire, le tableau se remplit, 1490 éléments sont créés.
Le tableau se remplit avec le texte que tu lui donne, en l'occurence -1, donc rien.
Remplace
par
Je te conseille également de mettre
avant la boucle de peuplement et
après la boucle.
Re: [..]Convertion poi format ov2 vers tableau
Posté : sam. 22 mai 2010 23:48
par Tlem
L'idéal serait sans doute remplacer la boucle par ceci.
► Afficher le texte
Code : Tout sélectionner
_GUICtrlListView_BeginUpdate($listview)
For $i = 1 to $aPOIs[0]
$ValSplit = StringSplit($aPOIs[$i], '|')
$Index = _GUICtrlListView_InsertItem($listview, $ValSplit[1])
_GUICtrlListView_SetItemText($listview, $Index, $ValSplit[2], 1)
_GUICtrlListView_SetItemText($listview, $Index, $ValSplit[3], 2)
_GUICtrlListView_SetItemText($listview, $Index, $ValSplit[4], 3)
Next
_GUICtrlListView_EndUpdate($listview)
Re: [..]Convertion poi format ov2 vers tableau
Posté : dim. 23 mai 2010 10:02
par pierrotm777
Moi je dis , merci Messieurs pour votre aide.
