Tanaka56
Messages postés124Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention29 janvier 2009
-
10 sept. 2006 à 11:19
Profil bloqué -
25 mars 2009 à 18:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
C'est surtout Willi qu'il faut remercier car c'est lui qui a fait la version VB net. Je n'ai fait que retranscrire de VB Net vers VB 6.0 car cela avait été demandé par un membre si mes souvenirs sont bons.
A + et bonne prog
BILLOTmi
Messages postés13Date d'inscriptionjeudi 27 novembre 2008StatutMembreDernière intervention25 octobre 2018 25 mars 2009 à 09:06
Salut,
Bon programme VB fait par quelqu'un qui apparement connait aussi C++
Reactivité tres rapide.
Merci BillotMi pour le bug que tu as découvert.
vous avez le droit de mettre une note si vous le désirez
A+ et bonne prog
BILLOTmi
Messages postés13Date d'inscriptionjeudi 27 novembre 2008StatutMembreDernière intervention25 octobre 2018 24 mars 2009 à 12:13
Tres bon programme,
Juste deux petits bugs a signaler (si fichier.ov2 comportant des Skippers et si description POI > 255 octets) dont voici une correction.
' -----------------------------------------------
' récup de la longueur de l'enregistremant POI
' -----------------------------------------------
'iLength = HexFile(compteur + 1) ' Bug si longueur > 255
' Correction
If typenreg% = 1 Then
' SKIPPER POI: Occupe toujours 21 Octets
' détermine la zone couverte par une partie du fichier
' Permet de sauter d'un seul coup un bloc de points
' si celui que l'on cherche n'est pas dans la zone
' Il suffit alors d'ajouter la taille du bloc
' au pointeur. C'est un accelerateur de traitement
' pour les recherches.
' Longueur constante pour ce type d'enregistrement
iLength = 5 * 4 + 1
Else
' Longueur variable pour les autres types d'enreg
CopyMemory iLength, HexFile(compteur + 1), 4
End If
Juste une petite remarque, Pourquoi avoir utilisé deux gros blocs memoire (Chaine$ et hexFile) pour charger l'integralité du fichier et ne pas avoir utilisé GET pour charger directement les variables (sans passer par que l'API CopyMem) et SEEK pour se positionner dans le fichier ?
Tres cordialement
Encore bravo pour le travail accompli.
Pour Roxa91
Pour pouvoir exploiter la source il faut posséder Visual Basic 6.0 qui est une interface de développement en Basic sous Windows
Le site est un site de sources de programmes en différents langages ( dont celui-ci en VB) et il est déconseillé de fournir les Exe à cause des possibilités de virus et pour respecter l'idée même du site : Codes-Sources
sinon bonns fêtes à tous et A+
roxa91
Messages postés2Date d'inscriptiondimanche 6 mai 2012StatutMembreDernière intervention 6 mai 2012 24 déc. 2007 à 15:47
Bien le bonjour a tous. Dites-moi, comment installent-ont ce logiciel, s'il vous plaît. Merci d'avance...
gallyhc
Messages postés386Date d'inscriptionsamedi 4 octobre 2008StatutMembreDernière intervention19 février 20182 12 sept. 2006 à 09:53
Bonjour,
Cela est vrai, mais hier j'êtais tres fatiger ;-) Sinon bonne continuation.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 12 sept. 2006 à 01:14
Juste pour affiner le cas de "A = A + &H1':
le décodage ne se fait qu'en phase de compilation (fort heureusement), dans l'exécutable c'est toujours codé direct en binaire.
On peut aussi accorder que s'il y a 2 octets de préfixe à vérifier avant une valeur hexa pour le compilo, le décodage binaire de l'hexa est TRES nettement plus simple et rapide car pas une seule multiplication mais seulement du "shl 4", il n'y a pas photo sur le rendement.
Salut Gally
Faire un programme de conversion VB net --> VB 6.0 : Ouahou !!!! Si tu y arrives tu as battu l'équipe Microsoft et envoie un CV à Bill Gates !!!!
Autre chose et ne le prends pas mal : le proc travaille en binaire et c'est l'homme qui travaille en décimal ou octal ou héxadécimal ; par contre le calcul n'est pas plus simple ou plus performant .
Un exemple prends le chiffre 1 dans A = A + 1
Toi tu écrit A = A + &H1 : le processeur décode le & puis le H , il en déduit que c'est de l'héxa , prends les chiffres héxa pour convertir le résultat dans le type de la variable A puis fait l'addition
Dans l'autre cas il déduit direct des chiffres décimaux
Pourquoi faire compliqué lorsque l'on peut faire simple ?
Allez bonne prog
gallyhc
Messages postés386Date d'inscriptionsamedi 4 octobre 2008StatutMembreDernière intervention19 février 20182 11 sept. 2006 à 22:46
salut Galain,
Cela est peu être une erreur de ma par mais je travail depuis kelke année en hexa dans toute mais source et ce juste parce que le proc travail comme cela et donc je penses ke c'est calcul plus simple pour le proc.
sinon j'ai encore un peu modifier ton code mais rien de très important...
Sinon le conversion du code est plutot bien et c'est la que je voudrais rebondir. Pourait on faire un programme de conversion .net VB6?
Merci Gally d'avoir corriger les petites erreurs
1° Le i% est resté car avant je récuperais la valeur de la longitude ou de la latitude autrement ( je n'utilisais pas copymemory)
2) J'ai modifié la récupération de la taille du fichier avec un LOF
3) J'ai rajouté le Erase pour le tableau
Par contre tu peux éviter de mettre les valeurs constantes numériques avec le &H : ce n'est à utiliser que lorsque l'on travaille vraiment au niveau de l'héxadécimal
Pour Drissou merci pour l'astuce du table.redraw
bonne prog à tous et vive VB France et Codes Sources
gallyhc
Messages postés386Date d'inscriptionsamedi 4 octobre 2008StatutMembreDernière intervention19 février 20182 11 sept. 2006 à 09:25
Bonjour,
Deja merci pour ta reponse même si celle-la ne m'aide pas beaucoup ;-).
Sinon j'ai regarder le code du format "OV2" avec attention et j'ai remarqué quelque petites erreurs (rien de grave non plus).
1. Tu declare quelque variable et beaucoup de le sont pas et comme tu n'es pas en option explicit cela fait que d variable ne serve a rien en fait.
2. Tu recuperes la taille de ton fichier par la taille physique de celui-ci, mais en plus simple tu prend la taille du chargement en cours par:
taille& FileLen(sFilename) REMPLACER PAR lngWidht LOF(lngCanal)
3. Les erreur de variables ce retrouve par exemple dans la fonction "CopyMemory longitude, HexFile(i% + compteur + 5), 4"
- A quoi sert le i%, en lecture qu code source cela ne sert a rien.
4. Pour aider au maximum a l'evolution de ce code source je me suis permit de refaire une version (plus propre), j'ai mis entre () parce que tout est relatif. Il y a surement d'autre domification a faire peu être?
' DECLARATION DES VARIABLES.
Dim lngI As Long
Dim lngJ As Long
Dim lngCount As Long
Dim lngCanal As Long
Dim lngWidht As Long
Dim lngILength As Long
Dim strTemps As String
Dim strFileName As String
Dim tabHEXFile() As Byte
' CHARGEMENT DES FICHIERS OV2.
Dialogue.ShowOpen
strFileName = Dialogue.FileName
If strFileName <> vbNullString Then
lngCanal = FreeFile
Open strFileName For Binary As lngCanal
lngWidht = LOF(lngCanal)
strTemps = Space$(lngWidht)
Get #lngCanal, , strTemps
Close #lngCanal
ReDim tabHEXFile(&H0 To lngWidht - &H1)
For lngI = &H1 To lngWidht
tabHEXFile(lngI - &H1) = Asc(Mid$(strTemps, lngI, &H1))
Next lngI
lngJ = &H1
Voila j'espere avoir un peu aider et @++
[Gally Home Corp]
cs_drissou
Messages postés160Date d'inscriptiondimanche 7 décembre 2003StatutMembreDernière intervention14 janvier 2009 11 sept. 2006 à 09:24
Bonjour,
super ce prog
rajoute seulement, avant le remplissage de Table
Table.redraw=false
et à la fin
table.redraw = true
tu n'auras plus d'effet de clignotement et le chargement se fera plus vite..
Drissou
Tanaka56
Messages postés124Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention29 janvier 2009 10 sept. 2006 à 11:19
Vraiment très bien.
Bien sur dirons certains "Dommage que l'on ne puisse pas faire de modification, d'adjonction ou de suppression", mais si ça se trouve ce n'est peut être qu'une ébauche et comme je le disais : De plus en plus, on commence à s'équiper de GSM. Ce "source" pourrait presque concurrencer le logiciel "PoiEdit". Merci à Willy et à toi Galain. Je vous mets un 10 à tous les deux, pour y avoir pensé et pour la modif. Bonne continuation.
25 mars 2009 à 18:02
A + et bonne prog
25 mars 2009 à 09:06
Bon programme VB fait par quelqu'un qui apparement connait aussi C++
Reactivité tres rapide.
24 mars 2009 à 18:29
vous avez le droit de mettre une note si vous le désirez
A+ et bonne prog
24 mars 2009 à 12:13
Juste deux petits bugs a signaler (si fichier.ov2 comportant des Skippers et si description POI > 255 octets) dont voici une correction.
' -----------------------------------------------
' récup de la longueur de l'enregistremant POI
' -----------------------------------------------
'iLength = HexFile(compteur + 1) ' Bug si longueur > 255
' Correction
If typenreg% = 1 Then
' SKIPPER POI: Occupe toujours 21 Octets
' détermine la zone couverte par une partie du fichier
' Permet de sauter d'un seul coup un bloc de points
' si celui que l'on cherche n'est pas dans la zone
' Il suffit alors d'ajouter la taille du bloc
' au pointeur. C'est un accelerateur de traitement
' pour les recherches.
' Longueur constante pour ce type d'enregistrement
iLength = 5 * 4 + 1
Else
' Longueur variable pour les autres types d'enreg
CopyMemory iLength, HexFile(compteur + 1), 4
End If
Juste une petite remarque, Pourquoi avoir utilisé deux gros blocs memoire (Chaine$ et hexFile) pour charger l'integralité du fichier et ne pas avoir utilisé GET pour charger directement les variables (sans passer par que l'API CopyMem) et SEEK pour se positionner dans le fichier ?
Tres cordialement
Encore bravo pour le travail accompli.
24 déc. 2007 à 17:41
24 déc. 2007 à 17:40
Pour pouvoir exploiter la source il faut posséder Visual Basic 6.0 qui est une interface de développement en Basic sous Windows
Le site est un site de sources de programmes en différents langages ( dont celui-ci en VB) et il est déconseillé de fournir les Exe à cause des possibilités de virus et pour respecter l'idée même du site : Codes-Sources
sinon bonns fêtes à tous et A+
24 déc. 2007 à 15:47
12 sept. 2006 à 09:53
Cela est vrai, mais hier j'êtais tres fatiger ;-) Sinon bonne continuation.
A++
12 sept. 2006 à 07:21
12 sept. 2006 à 01:14
le décodage ne se fait qu'en phase de compilation (fort heureusement), dans l'exécutable c'est toujours codé direct en binaire.
On peut aussi accorder que s'il y a 2 octets de préfixe à vérifier avant une valeur hexa pour le compilo, le décodage binaire de l'hexa est TRES nettement plus simple et rapide car pas une seule multiplication mais seulement du "shl 4", il n'y a pas photo sur le rendement.
11 sept. 2006 à 23:31
Faire un programme de conversion VB net --> VB 6.0 : Ouahou !!!! Si tu y arrives tu as battu l'équipe Microsoft et envoie un CV à Bill Gates !!!!
Autre chose et ne le prends pas mal : le proc travaille en binaire et c'est l'homme qui travaille en décimal ou octal ou héxadécimal ; par contre le calcul n'est pas plus simple ou plus performant .
Un exemple prends le chiffre 1 dans A = A + 1
Toi tu écrit A = A + &H1 : le processeur décode le & puis le H , il en déduit que c'est de l'héxa , prends les chiffres héxa pour convertir le résultat dans le type de la variable A puis fait l'addition
Dans l'autre cas il déduit direct des chiffres décimaux
Pourquoi faire compliqué lorsque l'on peut faire simple ?
Allez bonne prog
11 sept. 2006 à 22:46
Cela est peu être une erreur de ma par mais je travail depuis kelke année en hexa dans toute mais source et ce juste parce que le proc travail comme cela et donc je penses ke c'est calcul plus simple pour le proc.
sinon j'ai encore un peu modifier ton code mais rien de très important...
Sinon le conversion du code est plutot bien et c'est la que je voudrais rebondir. Pourait on faire un programme de conversion .net VB6?
Sinon bonne prog
A++
[Gally Home Corp]
11 sept. 2006 à 21:15
1° Le i% est resté car avant je récuperais la valeur de la longitude ou de la latitude autrement ( je n'utilisais pas copymemory)
2) J'ai modifié la récupération de la taille du fichier avec un LOF
3) J'ai rajouté le Erase pour le tableau
Par contre tu peux éviter de mettre les valeurs constantes numériques avec le &H : ce n'est à utiliser que lorsque l'on travaille vraiment au niveau de l'héxadécimal
Pour Drissou merci pour l'astuce du table.redraw
bonne prog à tous et vive VB France et Codes Sources
11 sept. 2006 à 09:25
Deja merci pour ta reponse même si celle-la ne m'aide pas beaucoup ;-).
Sinon j'ai regarder le code du format "OV2" avec attention et j'ai remarqué quelque petites erreurs (rien de grave non plus).
1. Tu declare quelque variable et beaucoup de le sont pas et comme tu n'es pas en option explicit cela fait que d variable ne serve a rien en fait.
2. Tu recuperes la taille de ton fichier par la taille physique de celui-ci, mais en plus simple tu prend la taille du chargement en cours par:
taille& FileLen(sFilename) REMPLACER PAR lngWidht LOF(lngCanal)
3. Les erreur de variables ce retrouve par exemple dans la fonction "CopyMemory longitude, HexFile(i% + compteur + 5), 4"
- A quoi sert le i%, en lecture qu code source cela ne sert a rien.
4. Pour aider au maximum a l'evolution de ce code source je me suis permit de refaire une version (plus propre), j'ai mis entre () parce que tout est relatif. Il y a surement d'autre domification a faire peu être?
' DECLARATION DES VARIABLES.
Dim lngI As Long
Dim lngJ As Long
Dim lngCount As Long
Dim lngCanal As Long
Dim lngWidht As Long
Dim lngILength As Long
Dim strTemps As String
Dim strFileName As String
Dim tabHEXFile() As Byte
' CHARGEMENT DES FICHIERS OV2.
Dialogue.ShowOpen
strFileName = Dialogue.FileName
If strFileName <> vbNullString Then
lngCanal = FreeFile
Open strFileName For Binary As lngCanal
lngWidht = LOF(lngCanal)
strTemps = Space$(lngWidht)
Get #lngCanal, , strTemps
Close #lngCanal
ReDim tabHEXFile(&H0 To lngWidht - &H1)
For lngI = &H1 To lngWidht
tabHEXFile(lngI - &H1) = Asc(Mid$(strTemps, lngI, &H1))
Next lngI
lngJ = &H1
Table.Row = &H1
While (Not lngWidht <= lngCount + &H1)
lngILength = tabHEXFile(lngCount + &H1)
Table.Col = &H0
Table.Text = Str$(lngJ)
strTemps = ""
For lngI = (lngCount + &HD) To (lngCount + lngILength - &H1)
strTemps = strTemps + Chr$(tabHEXFile(lngI))
Next lngI
Table.Col = &H1
Table.Text = strTemps
Call CopyMemory(lngCanal, tabHEXFile(lngCount + &H5), &H4)
Table.Col = &H2
Table.Text = Virgule(Str$(lngCanal))
Call CopyMemory(lngCanal, tabHEXFile(lngCount + &H9), &H4)
Table.Col = &H3
Table.Text = Virgule(Str$(lngCanal))
Table.Rows = Table.Rows + &H1
Table.Row = Table.Row + &H1
lngCount = lngCount + lngILength
lngJ = lngJ + &H1
Wend
End If
Erase tabHEXFile()
Voila j'espere avoir un peu aider et @++
[Gally Home Corp]
11 sept. 2006 à 09:24
super ce prog
rajoute seulement, avant le remplissage de Table
Table.redraw=false
et à la fin
table.redraw = true
tu n'auras plus d'effet de clignotement et le chargement se fera plus vite..
Drissou
10 sept. 2006 à 11:19
Bien sur dirons certains "Dommage que l'on ne puisse pas faire de modification, d'adjonction ou de suppression", mais si ça se trouve ce n'est peut être qu'une ébauche et comme je le disais : De plus en plus, on commence à s'équiper de GSM. Ce "source" pourrait presque concurrencer le logiciel "PoiEdit". Merci à Willy et à toi Galain. Je vous mets un 10 à tous les deux, pour y avoir pensé et pour la modif. Bonne continuation.