narfight
Messages postés129Date d'inscriptionlundi 17 mars 2003StatutMembreDernière intervention 4 mars 2010 19 févr. 2008 à 12:37
ça fonctionne mieux mais ceci pose probléme :
'UPGRADE_WARNING: Impossible de résoudre la propriété par défaut de l'objet FILE_MAP_ALL_ACCESS. Cliquez ici : 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
pProcess1 = MapViewOfFile(hFichier1m, FILE_MAP_ALL_ACCESS, 0, 0, 0)
Je ne comprend étant donné que FILE_MAP_ALL_ACCESS est une variable normal.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 19 févr. 2008 à 11:56
depend de ton appel
mais si tu colles un Integer, faut le passer ByVal
narfight
Messages postés129Date d'inscriptionlundi 17 mars 2003StatutMembreDernière intervention 4 mars 2010 19 févr. 2008 à 10:54
as-t-il moyen d'avoir une version .Net ?
les appelles des API ne fonctionne pas avec "Any" que j'ai remplacé par Integer mais ça ne semble quand même pas marcher.
Merci d'avance
cs_salazar
Messages postés241Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention19 février 20062 20 janv. 2005 à 12:59
Trop bien ton code, 12/10 ! Je l'intègre à une DLL qui scrute l'explorateur windows...
Question : comment peut on stocker en mémoire les données sans passer par le fichier .dat ?
Merci.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 juil. 2004 à 18:09
Oui d'accord, mais il n'était question que de variable texte à l'origine, alors des textes avec des Chr(0) ...
Dans le cas des Chaines contenant des choses bizarres, tu peux toujours mapper deux varaibles : la première donnerait la taille et la deuxième serait la variable elle-même.
cs_derick
Messages postés41Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention25 août 2007 13 juil. 2004 à 17:58
oui, c'est vrai cela fonctionne (j'ai aussi w2K) - mais y a un os : dans un fichier qcq, place en hexa un 00, si tu testes la fin sur 0, ou 01 sur tu testes sur vbNull : tu verras que tu sors de la boucle avant avoir lu l'ensemble du fichier. J'ai essayé de lire 'jusqu'au bout' (et au delà) pour essayer de trapper une erreur : hélas, w2k fait alors crasher le prog.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 13 juil. 2004 à 16:56
C'est bizarre ça, ça marche bien chez moi (W2k) et là, ça ne dépend pas du langage, mais de la structure des données dans la mémoire .... bizarre
cs_derick
Messages postés41Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention25 août 2007 12 juil. 2004 à 22:50
Jack,
La détection de fin de chaîne avec 0 ou avec vbNull ne fonctionne pas.
Scalpweb
Messages postés1467Date d'inscriptionsamedi 13 mars 2004StatutMembreDernière intervention 5 mai 20104 12 juil. 2004 à 17:59
bien cette source
cs_derick
Messages postés41Date d'inscriptionmardi 20 mai 2003StatutMembreDernière intervention25 août 2007 12 juil. 2004 à 11:17
Slt Jack !
Oui c'est Derick, mais tu divises l'âge du vrai par 2, ou presque !
Merci pour ta proposition, cela permet de généraliser le code - je vais mettre mon source à jour.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 11 juil. 2004 à 18:48
Salut Derick (le vrai ?)
Très intéressante cette source.
J'ai un peu appronfis pour améliorer :
Actuellement, tu passes une chaine de 64 caractères.
Si la chaine est de longueur quelconque, il faut faire les modifs suivantes :
-1- Dans le Serveur :
Dans la fonction CreateFileMapping, mettre "FileLen(filename)" à la place de 64 comme ça on fournit toute le contenu du fichier, quelque soit sa longueur.
-2- Dans le Client :
Dans le Command1_Click :
Dim monStr As String, i As Integer, V2() As Byte
Dim Trouvé As Boolean, Offset As Long
' On va les rechercher les caractères mappés
ReDim V2(0 To 16) ' Petite taille
' Pour remplir un array avec CopyMemory, on précise juste son 1er élément
Trouvé = False
monStr = ""
Do While Not Trouvé
' On lit 16 caractères à partir de l'emplacement mémoire
' désigné par pProcess2 auquel on ajoute les décalages
' des lectures successives (Offset)
CopyMemory V2(0), ByVal pProcess2 + Offset, 16
Offset = Offset + 16
For i = 0 To 15
' Si le caractère est vbNull (0), c'est la fin de la chaine
If V2(i) = 0 Then
Trouvé = True
Exit For
Else
' Sinon, on ajoute ces 16 caractères à notre résultat
monStr = monStr & Chr(V2(i))
End If
Next
DoEvents
Loop
MsgBox monStr, vbInformation, "Contenu de la mémoire partagée"
19 févr. 2008 à 12:37
'UPGRADE_WARNING: Impossible de résoudre la propriété par défaut de l'objet FILE_MAP_ALL_ACCESS. Cliquez ici : 'ms-help://MS.VSCC.v90/dv_commoner/local/redirect.htm?keyword="6A50421D-15FE-4896-8A1B-2EC21E9037B2"'
pProcess1 = MapViewOfFile(hFichier1m, FILE_MAP_ALL_ACCESS, 0, 0, 0)
Je ne comprend étant donné que FILE_MAP_ALL_ACCESS est une variable normal.
19 févr. 2008 à 11:56
mais si tu colles un Integer, faut le passer ByVal
19 févr. 2008 à 10:54
les appelles des API ne fonctionne pas avec "Any" que j'ai remplacé par Integer mais ça ne semble quand même pas marcher.
Merci d'avance
20 janv. 2005 à 12:59
Question : comment peut on stocker en mémoire les données sans passer par le fichier .dat ?
Merci.
13 juil. 2004 à 18:09
Dans le cas des Chaines contenant des choses bizarres, tu peux toujours mapper deux varaibles : la première donnerait la taille et la deuxième serait la variable elle-même.
13 juil. 2004 à 17:58
13 juil. 2004 à 16:56
12 juil. 2004 à 22:50
La détection de fin de chaîne avec 0 ou avec vbNull ne fonctionne pas.
12 juil. 2004 à 17:59
12 juil. 2004 à 11:17
Oui c'est Derick, mais tu divises l'âge du vrai par 2, ou presque !
Merci pour ta proposition, cela permet de généraliser le code - je vais mettre mon source à jour.
11 juil. 2004 à 18:48
Très intéressante cette source.
J'ai un peu appronfis pour améliorer :
Actuellement, tu passes une chaine de 64 caractères.
Si la chaine est de longueur quelconque, il faut faire les modifs suivantes :
-1- Dans le Serveur :
Dans la fonction CreateFileMapping, mettre "FileLen(filename)" à la place de 64 comme ça on fournit toute le contenu du fichier, quelque soit sa longueur.
-2- Dans le Client :
Dans le Command1_Click :
Vala