Bonjour tout le monde,
Actuellement je travail avec les sockets pour un transfert de fichier client
à client pour une de nos applications, je voudrais transmettre des
structures par le biais des sockets donc j'utilise transfert pour remplir
mon buffer
Transfert(&Buffer,&TrameListFile,Dimension (TrameListFile))
Avant celà j'initialise mon Buffer avec : Buffer=Répète(" ",Dimension
(TrameListFile))
Lorsque j'envoie sur mon socket avec SocketEcrit("Client",Buffer) j'ai une
erreur Access violation (GPF).
J'utilise le mode de transmission par defaut, si je stock une chaine dans le
buffer ça passe sans problème.
Voilà un exemple de structure utilisé:
TTrameListFile est une structure
TailledeLaTrame est un entier
TypedeTrame est un entier=1
Nomdefichier est une chaîne ASCIIZ sur 255
Hach est une chaîne ASCIIZ sur 22
Taille est un entier
FIN
Je suppose que je m'y prend mal c'est la première fois que j'utilise les
socket sous windev (je pense que çelà vient de ma façon de remplir mon
buffer)
Donc si quelqu'un à une solution je suis ouvert à toute proposition.
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Franck
> TTrameListFile est une structure TailledeLaTrame est un entier TypedeTrame est un entier=1 Nomdefichier est une chaîne ASCIIZ sur 255 Hach est une chaîne ASCIIZ sur 22 Taille est un entier FIN
Salut,
Essayes:
Matrame est une TTrameListFile
Initialises tes valeurs de la manière suivante:
Matrame:tailledelatrame0 etc...
Affecte MaTrame à ton buffer
Buffer=matrame
Ecris sur ta socket: socketecrit(socket,buffer)
sinon tu peux initialiser ton buffer d'octet en octet de la manière suivante:
buffer[[1 a 4]]=tailledelatrame (Entier = 4 octets) buffer[[5 a 8]]=typedelatrame buffer[[9 a 137]]=nomdefichier
et ainsi desuite.
A+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
> TTrameListFile est une structure
TailledeLaTrame est un entier
TypedeTrame est un entier=1
Nomdefichier est une chaîne ASCIIZ sur 255
Hach est une chaîne ASCIIZ sur 22
Taille est un entier
FIN
Salut,
Essayes:
Matrame est une TTrameListFile
Initialises tes valeurs de la manière suivante:
Matrame:tailledelatrame0
etc...
Affecte MaTrame à ton buffer
Buffer=matrame
Ecris sur ta socket:
socketecrit(socket,buffer)
sinon tu peux initialiser ton buffer d'octet en octet de la manière
suivante:
buffer[[1 a 4]]=tailledelatrame (Entier = 4 octets)
buffer[[5 a 8]]=typedelatrame
buffer[[9 a 137]]=nomdefichier
et ainsi desuite.
A+
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
> TTrameListFile est une structure TailledeLaTrame est un entier TypedeTrame est un entier=1 Nomdefichier est une chaîne ASCIIZ sur 255 Hach est une chaîne ASCIIZ sur 22 Taille est un entier FIN
Salut,
Essayes:
Matrame est une TTrameListFile
Initialises tes valeurs de la manière suivante:
Matrame:tailledelatrame0 etc...
Affecte MaTrame à ton buffer
Buffer=matrame
Ecris sur ta socket: socketecrit(socket,buffer)
sinon tu peux initialiser ton buffer d'octet en octet de la manière suivante:
buffer[[1 a 4]]=tailledelatrame (Entier = 4 octets) buffer[[5 a 8]]=typedelatrame buffer[[9 a 137]]=nomdefichier
et ainsi desuite.
A+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Romain PETIT
Dans son message précédent, Franck a écrit :
Le type de la variable est buffer
C'est un type de variable nouveau dans WD9 ?
Romain, cela existe aussi en 8.
Ah, moi je suis en WD7.5... Et c'est quoi la définition d'un type "buffer" en 8/9 ?
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Dans son message précédent, Franck a écrit :
Le type de la variable est buffer
C'est un type de variable nouveau dans WD9 ?
Romain, cela existe aussi en 8.
Ah, moi je suis en WD7.5...
Et c'est quoi la définition d'un type "buffer" en 8/9 ?
--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Dans son message précédent, Romain PETIT a écrit :
Et c'est quoi la définition d'un type "buffer" en 8/9 ?
Personne ne veut me dire ce qu'il est écrit dans l'aide de WD8 ou WD9 sur ce type de variable ?
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Sylvain
"Romain PETIT" a écrit dans le message de news:
Dans son message précédent, Romain PETIT a écrit :
Et c'est quoi la définition d'un type "buffer" en 8/9 ?
Personne ne veut me dire ce qu'il est écrit dans l'aide de WD8 ou WD9 sur ce type de variable ?
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Aide de WD9
Le type Buffer correspond à une zone mémoire binaire. Grâce à ce type, un code manipulant du binaire sera portable entre une application WinDev standard et une application WinDev Mobile. Sous WinDev standard, une variable de type chaîne de caractères peut aussi bien contenir des caractères que des données binaires (une image par exemple). Sous WinDev Mobile, si une variable de type chaîne de caractères contient des données binaires, ces données peuvent être érronées (conversion malencontreuse par exemple). Pour manipuler des données binaires, nous vous conseillons d'utiliser une variable de type buffer. De plus, le type buffer permet d'utiliser un code identique dans une application WinDev Mobile et dans une application WinDev standard. Le type buffer ne gère pas de marqueur spécifique de fin, et permet de stocker des 0 binaires. Ce type permet de manipuler une zone mémoire dont la taille est dynamique : elle s'adapte automatiquement au contenu du buffer.
Cordialement Sylvain L.
"Romain PETIT" <VoirM@Signature.fin> a écrit dans le message de news:
mn.53d07d515ac88eb9.2248@Signature.fin...
Dans son message précédent, Romain PETIT a écrit :
Et c'est quoi la définition d'un type "buffer" en 8/9 ?
Personne ne veut me dire ce qu'il est écrit dans l'aide de WD8 ou WD9 sur
ce type de variable ?
--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Aide de WD9
Le type Buffer correspond à une zone mémoire binaire.
Grâce à ce type, un code manipulant du binaire sera portable entre une
application WinDev standard et une application WinDev Mobile.
Sous WinDev standard, une variable de type chaîne de caractères peut aussi
bien contenir des caractères que des données binaires (une image par
exemple).
Sous WinDev Mobile, si une variable de type chaîne de caractères contient
des données binaires, ces données peuvent être érronées (conversion
malencontreuse par exemple). Pour manipuler des données binaires, nous vous
conseillons d'utiliser une variable de type buffer.
De plus, le type buffer permet d'utiliser un code identique dans une
application WinDev Mobile et dans une application WinDev standard.
Le type buffer ne gère pas de marqueur spécifique de fin, et permet de
stocker des 0 binaires. Ce type permet de manipuler une zone mémoire dont la
taille est dynamique : elle s'adapte automatiquement au contenu du buffer.
Dans son message précédent, Romain PETIT a écrit :
Et c'est quoi la définition d'un type "buffer" en 8/9 ?
Personne ne veut me dire ce qu'il est écrit dans l'aide de WD8 ou WD9 sur ce type de variable ?
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Aide de WD9
Le type Buffer correspond à une zone mémoire binaire. Grâce à ce type, un code manipulant du binaire sera portable entre une application WinDev standard et une application WinDev Mobile. Sous WinDev standard, une variable de type chaîne de caractères peut aussi bien contenir des caractères que des données binaires (une image par exemple). Sous WinDev Mobile, si une variable de type chaîne de caractères contient des données binaires, ces données peuvent être érronées (conversion malencontreuse par exemple). Pour manipuler des données binaires, nous vous conseillons d'utiliser une variable de type buffer. De plus, le type buffer permet d'utiliser un code identique dans une application WinDev Mobile et dans une application WinDev standard. Le type buffer ne gère pas de marqueur spécifique de fin, et permet de stocker des 0 binaires. Ce type permet de manipuler une zone mémoire dont la taille est dynamique : elle s'adapte automatiquement au contenu du buffer.
Cordialement Sylvain L.
Romain PETIT
Sylvain a émis l'idée suivante :
Le type Buffer correspond à une zone mémoire binaire.
[...]
Ok, merci Sylvain.
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Sylvain a émis l'idée suivante :
Le type Buffer correspond à une zone mémoire binaire.
[...]
Ok, merci Sylvain.
--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Le type Buffer correspond à une zone mémoire binaire.
[...]
Ok, merci Sylvain.
-- Romain PETIT http://cerbermail.com/?IJmancZl88 (cliquez sur le lien ci-dessus pour me contacter en privé)
Sylvain
"Franck" a écrit dans le message de news:
Affecte MaTrame à ton buffer
Buffer=matrame
Ecris sur ta socket: socketecrit(socket,buffer)
sinon tu peux initialiser ton buffer d'octet en octet de la manière suivante:
buffer[[1 a 4]]=tailledelatrame (Entier = 4 octets) buffer[[5 a 8]]=typedelatrame buffer[[9 a 137]]=nomdefichier
D'abord merci de ta réponse, On ne peut malheureusement affecté une structure au buffer déja essayé ^^ ça réponse : Un élément de type TTrameListFile ne peut pas être converti vers le type binaire. bref génial :p
Pour ce qui est de l'initialisation octet par octet si je pouvais m'en passer ce serais pas mal car je vais avoir une trentaine de trames et il faudrais que je le fasse coté client et coté serveur bref c'est pas terrible mais je garde cette solution dans le pire des cas.
Cordialement Sylvain L.
"Franck" <pasdemail@vousdonner> a écrit dans le message de news:
mn.531e7d5153f55ac2.22815@vousdonner...
Affecte MaTrame à ton buffer
Buffer=matrame
Ecris sur ta socket:
socketecrit(socket,buffer)
sinon tu peux initialiser ton buffer d'octet en octet de la manière
suivante:
buffer[[1 a 4]]=tailledelatrame (Entier = 4 octets)
buffer[[5 a 8]]=typedelatrame
buffer[[9 a 137]]=nomdefichier
D'abord merci de ta réponse,
On ne peut malheureusement affecté une structure au buffer déja essayé ^^
ça réponse : Un élément de type TTrameListFile ne peut pas être converti
vers le type binaire. bref génial :p
Pour ce qui est de l'initialisation octet par octet si je pouvais m'en
passer ce serais pas mal car je vais avoir une trentaine de trames et il
faudrais que je le fasse coté client et coté serveur bref c'est pas terrible
mais je garde cette solution dans le pire des cas.
sinon tu peux initialiser ton buffer d'octet en octet de la manière suivante:
buffer[[1 a 4]]=tailledelatrame (Entier = 4 octets) buffer[[5 a 8]]=typedelatrame buffer[[9 a 137]]=nomdefichier
D'abord merci de ta réponse, On ne peut malheureusement affecté une structure au buffer déja essayé ^^ ça réponse : Un élément de type TTrameListFile ne peut pas être converti vers le type binaire. bref génial :p
Pour ce qui est de l'initialisation octet par octet si je pouvais m'en passer ce serais pas mal car je vais avoir une trentaine de trames et il faudrais que je le fasse coté client et coté serveur bref c'est pas terrible mais je garde cette solution dans le pire des cas.