Aujourd´ hui, le classique, probleme de passage d´ argument a un thread.
list newlist; //structure list
list *e;
e = &newlist;
e->endl = 0;
e->eThread =
CreateThread(NULL,
NULL,
ListThread,
(LPVOID)e,
NULL,
(PDWORD)&e->eThreadId);
VOici la proc du THread :
DWORD WINAPI ListThread(LPVOID lpParam)
{
list *lpList;
lpList = (list*)lpParam;
cout << lpList->endl;
}
que m´ affiche le cout ?
-15487623 et des conneries
++
Merci d´ avance , je vous aime
que fait la fonction qui appelle ton thread après ?
elle sort :
return newlist;
comme moi d´ ailleur,
a+
Bon, voila l´ evolution :
j´ ai changé le derniere argument (PDWORD)truc en (LPDWORD) truc. Le compilateur s´en fou completement a mon avis c ´est la meme chose.
j´ ai aussi mis
LPVOID*)e pour le passage du pointeur. (j´ ai rajouté une etoile). Sa change strictement rien.
Jme demande si faut pas faire un projet win32 ou inclure quelque chose dans le linker ( j´ ai bien sur inclu windows.h)
Dailybug ; le rubrique ParAnoRmalE :
Nous sommes le dimanche 12 novembre, dans une petite ville autour de Grenoble ou des temoins auraient vecut une experience mysterieuse. Nous avons interrogé l´ un d´ eux qui a accepté de temoigner :
"J´ ai rajouté apres ma creation de thread un cout << handleduthread; puis un system(pause);. Pour voir si le handle n ´etait pas negatif. Tout va bien de ce coté la MAIS le cout du thread ne s´ affiche QU´ APRES avoir appuyer sur une touche. Comme si le Thread se passait a la suite de ma fonction d´ appel."
Ces paroles inquietantes ne sont pas encore appuyés par des preuves tangibles, en effet le temoin n´ a guere eu le temps de prendre un screenshot.
Nous avons poursuivis notre enquete a la recherche d´une explication scientifique, malheuresement en vain.
Il existe cependant une rumeur qui ferait circuler que la fonction system("pause"); bloquerait l´ acces a la console, mais bien sur ce n´ ait qu´ une rumeur est aucune autorité n´ a encore fait de declaration.
C´ etait Gerome Ammassi aka "Cool G" pour dailybug paranormale.
comme disait jean-jacques: "tout etait dit"
tu fais dans le thread principale
list newlist
createthread(mafonction, &newlist);
return newlist;
ton newlist est alloué sur la pile du thread principale
son adresse est sur la pile.
L´objet est désalloué après le retour de ta fonction
et ceci AVANT que ton thread n´est démarré...
Tu fais la meme erreur que:
int* toto()
{
int a;
return &a;
}
Il faut alloué ton espace mémoire dynamiquement ou alors qu´il soit a un endroit qui ne sera pas désalloué.
Merci godrik, voila le resultat dans le cas fortement improbable que sa interresse quelqu´ un.
list *newlist = new list;//mon premier jeu de mot
c++
newlist->endl = 0;
CreateThread(NULL,
NULL,
ListThread,
(LPVOID*)newlist,
NULL,
(PDWORD)&newlist->eThreadId);
merci a tous !
n´oublie pas de le désallouer dans ton thread! ;)
oép je desaloue.
Bon comme j´ ai pas mal d´ autres problemes j´ vais utilisé le meme sujet. Je le recyle en gros.
Dailybug, La rubrique internet :
Je sais comment faire pour demander une page web a un serveur (lu fvirtman), je connnais aussi un peu le (x)html et autre. Donc je me demandais comment une page html envoie des informations a une page php.
Par exemple l´ utilisateur doit saisir son nom.
Je sais que la page web la recupere puis choisit la page php a qui envoyer l´ information.(<form> post... tout sa je sais)
Mon probleme est : comment envoyer l´ info a la page php ? qu´ envoie ton au server ? Je parle pas du code html je parle de la requete http.
++
Dailybug recrute, si vous etes riche et genereux n´ hesitez pas.
soit dans l´URL soit en post
fait un coup d´ethereal et regarde ce qu´envoie ton navigateur, tu comprendra.
Merci godrik.
dans l´ url c ´est a dire : http:\\www.daylibug.com\name?name="godrik".php ?
Je comprend pas ce que tu veux dire par "par post".
Et pour Ethereal :
Sa faisait super longtemps que je cherchais un logiciel comme sa donc il marche pas. Un probleme avec GetModuleFileName. Sa doit venir de ma version des dll (windows ME quand meme).
Tu peux juste me dire ce que sa donne ?
pour le passage par l´url ce serait plutot:
http://www.daylibug.com/tapage.php?nom=godrik
avec eventuelement un &var2=valeur&var3=valeur ect pour passer plusieur variables. Attention cependant car les carateres spéciaux (espace, retour a la ligne,...) se passent differement. Le mieu c´est de bidouiller un petit formulaire en html qui pointe vers une pages bidon et de voir la tete du lien qui est demandé quand tu clique sur le bouton submit
n00ble55
Il existe 2 méthodes pour transmettre des données d´une page à une autre :
- la méthode GET
Exemple :
http://www.daylibug.com/tapage.php?nom=godrik&forum=programmation
Avantage, on n´est pas obligé d´utiliser un formulaire.
Inconvénient, on voit le contenu des paramètres et celà peut parfois être gênant pour de mots de passe.
- la méthode POST
Avantage, les paramètres n´apparaissent pas dans l´URL.
Inconvénient, on est obligé d´utiliser un formulaire.
Pour plus d´information sur les formulaires et leur exploitation en PHP :
http://www.siteduzero.com/tuto-3-196-1-les-formulaires.html
http://www.siteduzero.com/tuto-3-180-1-php-et-les-formulaires.html
![]()
Voila de façon brut ce qu´en mon navigateur sur un site web quelconque:
POST /gestion/login/session.php HTTP/1.1
Host: jdr.chewbii.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20060921 Ubuntu/dapper-security Firefox/1.5.0.7
Accept:
text/xml,application/xml,application/xhtml+xml,tex
t/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://jdr.chewbii.com/
Cookie: PHPSESSID=iciunidentifiantdesession
Content-Type: application/x-www-form-urlencoded
Content-Length: 25
LOGIN=monlogin&MDP=monmotdepasse
les lignes importantes sont:
POST /gestion/login/session.php HTTP/1.1
Host: jdr.chewbii.com
Cookie: PHPSESSID=iciunidentifiantdesession
LOGIN=monlogin&MDP=monmotdepasse
Je suis pas sur d´ avoir compris donc je fais un exemple concret :
Voici la source de
http://www.lovecarote.com/index.htm
<html>
<form name="formumu" action="non" method="POST">
<input name ="login">
..
j´ entre comme login 342.
donc sa me donnerais :
POST /non.php HTTP/1.1
Host: lovecarote.com
Accept: * /*
login="342" (je mes les " ou pas ?)
et aussi quand on a des expressions comme formumu.login.machin en javascript a quoi ca fait appel ?
merci de m´ avoir deja pas mal eclairé,
++
Je te conseille de suivre les 2 tutoriaux que j´ai donné, l´un pour le formulaire HTML, l´autre pour l´exploitation des données en PHP.
A tatonner comme ça, tu vas galérer plus qu´autre chose !
jles ai lu. Mais sa me dit comment faire un form en html et le recuperer en php. Or moi ce qui m´ interesse est entre les 2.
Tu sais si la requete que je viens d´ ecrire est juste ?
"Or moi ce qui m´ interesse est entre les 2."
Mais il n´y a rien à faire entre les 2 !
Tu dis que tu as lu les tutoriaux, mais il ne faut pas se contenter de lire, il faut essayer les codes en exemple, le modifier, les adapter, ...
La simple lecture ne permet pas de comprendre, ni de retenir.
"Tu sais si la requete que je viens d´ ecrire est juste ?"
Ce que t´as indiqué Godrik, ce sont les informations complètes envoyées par le formulaire au script PHP, mais c´est plus pour info qu´autre chose, car on ne s´en sert que rarement sous cette forme.
N´en tiens pas compte, celà va t´embrouiller plus qu´autre chose.
Refait bien les tutoriaux, ses exemples, adaptes-les, tu verras, tu arriveras très vite et sans problème à ce que tu veux.
Je les ai compris les tutos. Je les avait deja lu avant que tu me les passes, le site du zero etant mon premier reflexe.
Si, il y a quelque chose entre les 2, il faut bien que le navigateur demande la page au server. Je ne veux pas faire de site, juste demander une page. Je sais bien que je dois connaitre un minimum de php et html, c ´est ce que j´ ai fait. J´ ai compris le principe et sa mise en place, mais pourquoi devrais-je me taper toute la syntaxe ? Il me suffit de savoir si cette requete est bonne.
non la requete est fausse. Le server me renvoie rien.
erreur 400 bad request me dit il