Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Winsock et passage de type

27 réponses
Avatar
Marc
Bonjour,

Est il possible, et comment, de passer un type avec winsock ?

du style


Public Type IndexAnnuaireCP
CP As String * 50
Adresse As String * 10
End Type


Public Annuaire As AnnuaireCP

passage:

Winsock1.SendData Annuaire

pour l'instant je ne trouve pas la solution.

Si cela est possible comment on la récupère à l'autre bout ?
et comment on appel dans ce cas Annuaire.CP ?

Par avance merci.

Marc

10 réponses

1 2 3
Avatar
Marc
Ou alors est il possible, et comment, de creer en cours d'execution un type
du style ?

Public Type IndexAnnuaireCP
CP As String * 50
Adresse As String * 10
End Type


Public Annuaire As AnnuaireCP

Marc

Bonjour,

Est il possible, et comment, de passer un type avec winsock ?

du style


Public Type IndexAnnuaireCP
CP As String * 50
Adresse As String * 10
End Type


Public Annuaire As AnnuaireCP

passage:

Winsock1.SendData Annuaire

pour l'instant je ne trouve pas la solution.

Si cela est possible comment on la récupère à l'autre bout ?
et comment on appel dans ce cas Annuaire.CP ?

Par avance merci.

Marc



Avatar
Jacques93
Bonjour Marc,
Marc a écrit :
Bonjour,

Est il possible, et comment, de passer un type avec winsock ?

du style


Public Type IndexAnnuaireCP
CP As String * 50
Adresse As String * 10
End Type


Public Annuaire As AnnuaireCP

passage:

Winsock1.SendData Annuaire

pour l'instant je ne trouve pas la solution.




Une piste, passer par CopyMemory (RtlMoveMemory) avec un tableau de Bytes.

en anglais :

http://www.tek-tips.com/faqs.cfm?fid81

en "français" :

http://www.tek-tips.com/faqs.cfm?fid81
--

Cordialement,

Jacques.
Avatar
Jean-marc
Marc wrote:
Ou alors est il possible, et comment, de creer en cours d'execution
un type du style ?

Public Type IndexAnnuaireCP
CP As String * 50
Adresse As String * 10
End Type



Sur un socket avec Winsowck, on peut envoyer:
- une chaine de caractères
- un byte array

Le plus facile dans ton cas est donc de faire une petite fonction:

sub EnvoiIdxAnnuaireCP(v as IndexAnnuaireCP )
dim s as string

s = v.CP & v.Adresse
winsock1.senddata s
end sub

et à l'autre bout

Dim v as IndexAnnuaireCP
dim s as string

Winsock1.Getdata s
' bien vérifier la taille de s, et tout ça

' puis quand on est sur d'avoir tout reçu:
v.CP = mid$(s, 1, 10)
v.Adresse = mid$(s, 11)

L'exemple que je donne est évidemment rudimentaire, mais c'est l'idée.

Tu peux envoyer les données avec le protocole que tu veux,
pour autant qu'il soit compris des 2 cotés.

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Jacques93 a loupé un copier/coller :

en "français" :

http://www.tek-tips.com/faqs.cfm?fid81



<http://support.microsoft.com/kb/152058>

--

Cordialement,

Jacques.
Avatar
Jacques93
Marc a écrit :
Bonjour,

Est il possible, et comment, de passer un type avec winsock ?

du style


Public Type IndexAnnuaireCP
CP As String * 50
Adresse As String * 10
End Type





Drôle de pays tout de même, adresse sur 10, Code Postal sur 50 ???
Les facteurs vont avoir du boulot ;-)


--

Cordialement,

Jacques.
Avatar
Jean-marc
Jacques93 wrote:
Marc a écrit :
Bonjour,

Est il possible, et comment, de passer un type avec winsock ?

du style


Public Type IndexAnnuaireCP
CP As String * 50
Adresse As String * 10
End Type





Drôle de pays tout de même, adresse sur 10, Code Postal sur 50 ???
Les facteurs vont avoir du boulot ;-)



Les fabricants d'enveloppes doivent aussi faire des formats
spéciaux:

+---------------------------------------------------------------+
| |
| ..... |
| . G . |
| . G . |
| ..... |
| |
| Mr Jean Dupont |
| 12345688228526974226325684623518395513848, Rue des tamaris |
| B - BizzarrVille - Bizzarland |
| |
+---------------------------------------------------------------+


--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Marc
Merci à tous les deux,

en fait les nom sont bidons pour l'instant.

enfin presque.
l'adresse corespond au n° d'enregistrement dans un fichier avec random.

je travail à faire un serveur de fichier sequentiel indexé.

les solutions que vous m'avez données me permette d'avancer à grands pas.

Je pense à une dernière question:
Est-il possible de creer un type (structure en C) en cours d'execution.
En fait je stock sur mon serveur les nom et les tailles des champs dans un
fichier, de ce fichier il faudrait que je puisse creer le type avec les
infos du fichier.

Avez vous une ou plusieurs idées ?

Marc

- www.gelase.org
"Jean-marc" a écrit dans le message de news:
4ae880a1$0$2847$
Jacques93 wrote:
Marc a écrit :
Bonjour,

Est il possible, et comment, de passer un type avec winsock ?

du style


Public Type IndexAnnuaireCP
CP As String * 50
Adresse As String * 10
End Type





Drôle de pays tout de même, adresse sur 10, Code Postal sur 50 ???
Les facteurs vont avoir du boulot ;-)



Les fabricants d'enveloppes doivent aussi faire des formats
spéciaux:

+---------------------------------------------------------------+
| |
| ..... |
| . G . |
| . G . |
| ..... |
| |
| Mr Jean Dupont |
| 12345688228526974226325684623518395513848, Rue des tamaris |
| B - BizzarrVille - Bizzarland |
| |
+---------------------------------------------------------------+


--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;






Avatar
Jean-marc
Marc wrote:
Merci à tous les deux,



Je pense à une dernière question:
Est-il possible de creer un type (structure en C) en cours
d'execution.



Non, ni en VB ni en C d'ailleurs, et pour des raisons évidentes:
il faudrait alors que le prgramme génère à l'exécution du code
pour manipuler le nouveau type ...

En fait je stock sur mon serveur les nom et les tailles
des champs dans un fichier, de ce fichier il faudrait que je puisse
creer le type avec les infos du fichier.



ok.

Avez vous une ou plusieurs idées ?



Oui.
Il te suffit de créer une chaine de taille égale à la somme
des tailles des champs et à écrire les champs aux bonnes positions.

Tu caches tout ça dans une couche un peu abstraite, bien sur.

Très classique en ISAM.

Cordialement,

--
Jean-marc Noury (jean_marc_n2)
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jacques93
Jean-marc a écrit :
Jacques93 wrote:



Drôle de pays tout de même, adresse sur 10, Code Postal sur 50 ???
Les facteurs vont avoir du boulot ;-)






Bonjour Jean-Marc,

Les fabricants d'enveloppes doivent aussi faire des formats
spéciaux:

+---------------------------------------------------------------+
| |
| ..... |
| . G . |
| . G . |
| ..... |
| |
| Mr Jean Dupont |
| 12345688228526974226325684623518395513848, Rue des tamaris |
| B - BizzarrVille - Bizzarland |
| |
+---------------------------------------------------------------+





Ben oui pour les enveloppes, mais en fait non, ça c'est le code postal
de Mr DuponD !!!

<http://www.chavaipa.com/wp-content/uploads/2008/11/tintin_dupont.jpg>

--

Cordialement,

Jacques.
Avatar
Jacques93
Jean-marc a écrit :
Marc wrote:
Merci à tous les deux,



Je pense à une dernière question:
Est-il possible de creer un type (structure en C) en cours
d'execution.



Non, ni en VB ni en C d'ailleurs, et pour des raisons évidentes:
il faudrait alors que le prgramme génère à l'exécution du code
pour manipuler le nouveau type ...



Pas tout à fait d'accord, mais c'est relativement lourd à mettre en
oeuvre. Nous avons réussi, je dis nous sans pédanterie, nous étions
plusieurs, il y a quelques années, à gérer en VB des fichiers Isam
Microfocus, dont la description originale était en Cobol Microsoft (Si
si, il a existé). Ce qui implique des formats de données inconnus de VB
(COMP-0, Comp-3 (très intéressant), Comp-5, Comp-X), avec
enregistrements de longueur variable, tout cela en séquentiel indexé.

Ceci, dans une première phase, avec un .ini décrivant les divers
enregistrements et types de champs, ainsi que leur taille.

Cela suppose toutefois de connaitre les différentes structures que l'on
peut rencontrer.

J'avais participé précédemment aux mêmes genres de blagues en migrant
compilateur, et gestion de fichier de Dibol sous AIX, vers SCO Unix et
MS-DOS.

Dans tous les cas, ce fut une impasse, pas tellement en terme technique,
mais en terme de coût. Mais je parle ici de migration.

Si on part de zéro, je me rappelle avoir lu, mais je ne sais plus où,
que l'important n'est pas l'algorithme, mais comment on structure ses
données

--

Cordialement,

Jacques.
1 2 3