Pour info P-code ou Exe ?

thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 - 22 avril 2004 à 10:38
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 23 avril 2004 à 13:09
Salut

J'ai fait un petit projet pour ma boite qui me permet d'utiliser des Ocx de cartographie.

Je fait mon prog, je l'éxécute et je constate que ca marche.

Dans la suite logique des choses, je compile et je lance l'exe qui..... utilise 100% du processeur sans pour autant faire quoi que ce soit !!!!!!

Alors pour la première fois de ma vie, je compile en P-code puis je lance l'exe qui fonctionne parfaitement !

kelkun sait il pourquoi ?

Bonne prog @ tous

Nico

5 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 avril 2004 à 11:12
Est-ce que l'utilisation à 100% du CPU se produit sur une seule machine, ou bien est-ce que le déploiement de l'exe en code natif sur d'autres postes génère le même phénomène ?

Christophe R.
0
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 3
22 avril 2004 à 12:02
L'exécution sur d'autre machine provoque le même comportement.

T'as une idée ?
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 avril 2004 à 13:26
faudrait voir ce que fait ton code, pour savoir un peu !! Mais c'est étrange que l'EXE en pCode ne réagisse pas pareil !! Vraiment très étrange !!

Christophe R.
0
thiosyiasar Messages postés 186 Date d'inscription lundi 11 mars 2002 Statut Membre Dernière intervention 30 novembre 2010 3
22 avril 2004 à 14:54
En fait mon exe attaque des controles ActiveX (MapAndGuide controls) a savoir le MGCMapSource et le MGCMapControl.

Je ne peut pas te les envoyer à cause de la licence mais je peux coller le code de l'unique Feuille du projet de test

Je pense peut être que les controles sont à l'origine du souci

Option Explicit
Option Base 0

Private Const STRADDR_ID As Long = 0
Private Const STRADDR_LNAME As Long = 1
Private Const STRADDR_FNAME As Long = 2
Private Const STRADDR_CONTRY As Long = 3
Private Const STRADDR_POSTCODE As Long = 4
Private Const STRADDR_TOWN As Long = 5
Private Const STRADDR_ADDRESS As Long = 6
Private Const STRADDR_XCOORD As Long = 7
Private Const STRADDR_YCOORD As Long = 8
Private Const STRADDR_COLIDMAX As Long = 8

Private Const GEOADDR_COUNTRY As Long = 0
Private Const GEOADDR_TOWN As Long = 1
Private Const GEOADDR_DISTRICT As Long = 2
Private Const GEOADDR_STREET As Long = 3
Private Const GEOADDR_XCOORD As Long = 4
Private Const GEOADDR_YCOORD As Long = 5
Private Const GEOADDR_IDHIGH As Long = 6
Private Const GEOADDR_IDLOW As Long = 7
Private Const GEOADDR_COLIDMAX As Long = 7

Private mvStrAddrs() As Variant '(colonne, ligne) Table des adresses littérales
Private mvGeoAddrs() As Variant '(colonne, ligne) Table des adresses géocodées

Private mpAddrs As Integer 'Pointeur d'adresse
Private miAddrsCount As Integer 'Nombre d'adresse en cours

Private msLayerName As String

Private Sub Form_Load()

Call start
Call addAddress("01 DB", "15 rue de Cadix", "75015", "Paris")
Call addAddress("12PLANET", "40 bis rue du Faubourg Poissonière", "75010", "Paris")
Call addAddress("3ATRED", "13 rue Vivienne", "75002", "Paris")
Call addAddress("3CIF", "41 Avenue Georges V", "75008", "Paris")
Call addAddress("Marvin", "7 rue mulhouse", "75002", "Paris")
Call refreshMap

End Sub

Private Sub Form_Resize()
Me.MapControl.Width = Me.Width - 150
Me.MapControl.Height = Me.Height - 420
End Sub

' ****************************************************************
' INITIALISATION DE L'INSTANCE
' ****************************************************************
Public Sub start(Optional ByVal size As Long = 16, _
Optional ByVal color As Long = vbBlue, _
Optional ByVal shape As Long = easCIRCLE)
msLayerName = "#TMP"
Set MapControl.MapSource = MapSource ' Type incompatible si exécuté dans le UserControl_Initialize()
Call MapControl.Map.AddressDB.SetTMPSymbol(easCIRCLE, color, size)
Call clearAddresses
End Sub

' ****************************************************************
' INTERFACE PUBLIQUE - GESTION DU CONTENU
' ****************************************************************

Public Sub clearAddresses()
mpAddrs = 0
miAddrsCount = 0
Erase mvStrAddrs
Erase mvGeoAddrs
Call MapControl.Map.AddressDB.RemoveAll(msLayerName)
End Sub

Public Sub addAddress(ByVal name As String, _
ByVal address As String, _
ByVal postCode As String, _
ByVal town As String, _
Optional ByVal contry As String = "F")

' Gestion des tables
If mpAddrs = 0 Then
ReDim mvStrAddrs(STRADDR_COLIDMAX, mpAddrs)
ReDim mvGeoAddrs(GEOADDR_COLIDMAX, mpAddrs)
Else
ReDim Preserve mvStrAddrs(STRADDR_COLIDMAX, mpAddrs)
ReDim Preserve mvGeoAddrs(GEOADDR_COLIDMAX, mpAddrs)
End If

' Ecriture des données de l'adresse
mvStrAddrs(STRADDR_LNAME, mpAddrs) = name
mvStrAddrs(STRADDR_ADDRESS, mpAddrs) = address
mvStrAddrs(STRADDR_POSTCODE, mpAddrs) = postCode
mvStrAddrs(STRADDR_TOWN, mpAddrs) = town
mvStrAddrs(STRADDR_CONTRY, mpAddrs) = contry

' Ecriture des données géographique
Call convGeoAddress(mpAddrs)

' Insertion dans la carte
Call insertAddress(mpAddrs)

' Mise à jour des compteurs
mpAddrs = mpAddrs + 1
miAddrsCount = miAddrsCount + 1

End Sub

Public Sub refreshMap()
Call MapControl.refreshMap
End Sub

' ****************************************************************
' PROCEDURES PRIVEES - GESTION DES ACTIONS SUR LA CARTE
' ****************************************************************

Private Sub convGeoAddress(ByVal index As Long)

On Error Resume Next

Dim vGeoResult As Variant
Dim iAddrMax As Integer
Dim pAddr As Integer
Dim idCol As Integer

'next line performs a geocoding and saves the result in GeoResult

Debug.Print "Convertion de : " & mvStrAddrs(STRADDR_ADDRESS, index) & " " _
& mvStrAddrs(STRADDR_POSTCODE, index) & " " _
& mvStrAddrs(STRADDR_TOWN, index) & " " _
& mvStrAddrs(STRADDR_CONTRY, index)

' Convertion de l'adresse
vGeoResult = MapControl.Map.Geocode(9, mvStrAddrs(STRADDR_CONTRY, index), _
mvStrAddrs(STRADDR_POSTCODE, index) & " " & mvStrAddrs(STRADDR_TOWN, index), _
mvStrAddrs(STRADDR_ADDRESS, index))
' Lecture du nombre de correspondances trouvées
iAddrMax = UBound(vGeoResult, 2)

For idCol = LBound(vGeoResult, 1) To UBound(vGeoResult, 1)
If Not IsEmpty(vGeoResult) Then
mvGeoAddrs(idCol, index) = vGeoResult(idCol, 0) 'copys the geocode data into the Result array
End If
Next

For pAddr = 0 To iAddrMax
Debug.Print " ------------> " & vGeoResult(GEOADDR_STREET, pAddr) & " " _
& vGeoResult(GEOADDR_TOWN, pAddr) & " " _
& vGeoResult(GEOADDR_COUNTRY, pAddr) & " "
Next pAddr

End Sub

Private Sub insertAddress(ByVal index As Long) 'this sub inserts the addresses of your table into the TMP layer and display the addresses in the map
Dim data(1, 2) 'variable to set the data of the TMP entry (ID,X,Y)

'miItemCount = miItemCount + 1
data(0, 0) = "ID" '[0,i]=description here:ID
data(1, 0) = index 'mvStrAddrs(STRADDR_LNAME, index) 'miItemCount '[1,i]=value
data(0, 1) = "X"
data(1, 1) = mvGeoAddrs(GEOADDR_XCOORD, index)
data(0, 2) = "Y"
data(1, 2) = mvGeoAddrs(GEOADDR_YCOORD, index)
Dim data1 As Variant
data1 = data() 'a variant is needed to use the AddressDB.Insert method, not an array
Call MapControl.Map.AddressDB.Insert(data1, msLayerName)

End Sub

Nico
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 avril 2004 à 13:09
Ben je mpeux pas le tester, vu que j'ai pas les OCX mais le code à l'air propre ! Je comprends pas bien !
Essaye de tracer l'activité de ton programme en ecrivant dans un fichier log chaque entrée/sortie d'une sub/fonction et avant et après chaque appel à une méthode/propriété des activex.
Tu verra bien ce qu'il fait comme dernière action quand il se met à mouliner, cela te donnera peut-être une piste.

Christophe R.
0
Rejoignez-nous