Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1269 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [c++] sauvegarder code source IE dans un fichier...

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[c++] sauvegarder code source IE dans un fichier...

n°520467
husiana
Posté le 22-09-2003 à 16:06:14  profilanswer
 

voila, j'aimerais sauvegarder les sources d'une page automatiquement en C++, est-ce possible...?
 
j'ai des valeures a recup ds la page...


---------------
http://husiana.myftp.org/phpsysinfo
mood
Publicité
Posté le 22-09-2003 à 16:06:14  profilanswer
 

n°520473
Taz
bisounours-codeur
Posté le 22-09-2003 à 16:15:14  profilanswer
 

:??: tu veux dire télécharger une page (rien que le html) ?

n°520485
antp
Super Administrateur
Champion des excuses bidons
Posté le 22-09-2003 à 16:33:04  profilanswer
 

en C++Builder :
 

TIdHTTP *bidule = new TIdHTTP(0);
AnsiString page;
page = bidule->Get("htpp://bidule.com/page.html" );
delete bidule;


Message édité par antp le 22-09-2003 à 16:55:07

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°520496
chrisbk
-
Posté le 22-09-2003 à 16:46:21  profilanswer
 

TIdHttp *bidule = new TIdHttp.Create(NULL);  
 
 
C koi cette syntaxe ?

n°520497
Taz
bisounours-codeur
Posté le 22-09-2003 à 16:49:18  profilanswer
 

NULL est 0 en C++, préférez cette notation s'il vous plait

n°520498
skeye
Posté le 22-09-2003 à 16:50:21  profilanswer
 

Taz a écrit :

NULL est 0 en C++, préférez cette notation s'il vous plait


ca change quoi? :??:

n°520501
antp
Super Administrateur
Champion des excuses bidons
Posté le 22-09-2003 à 16:52:39  profilanswer
 

chrisbk a écrit :

TIdHttp *bidule = new TIdHttp.Create(NULL);  
 
 
C koi cette syntaxe ?


 
ha merde, l'habitude de Delphi [:rofl], j'édite
 
avec un 0 pour faire plaisir à Taz :o


Message édité par antp le 22-09-2003 à 16:53:21

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°520502
Taz
bisounours-codeur
Posté le 22-09-2003 à 16:53:56  profilanswer
 

ben c'est plus court écrire, et le NULL a été introduit comme macro pour plaisir au programmeur C: en C le typage est faible, on cast tout comme on veut, parcontre, quand il s'agit de pointeurs, ben non, faut pas déconner, si y a pas marquer NULL, ça peut pas marcher.
 
tiens questions subsidiaires
 
en C
#ifdef __CPLUSPLUS
#define NULL 0
#else  
#define NULL ((void*)0)  /* 0 ou n'importe quoi, la norme n'impose rien en C */
#endif
 
pourquoi cette différence ? pour quoi en C if(ptr) est considéré comme non-portable ?

n°520508
chrisbk
-
Posté le 22-09-2003 à 17:15:57  profilanswer
 

pour quoi en C if(ptr) est considéré comme non-portable ?
 
ptet parce que certaines plateformes n'ont aucun soucis existentiel a travailler sur 0x0

n°520510
Taz
bisounours-codeur
Posté le 22-09-2003 à 17:19:55  profilanswer
 

en fait la réponse est dans la question. en C NULL est une macro qui représente une adresse dont on a la garantie qu'elle ne sera jamais utilisée. mais aucune garantie que la représentation binaire de NULL soit zéro. j'ai souvenir de je sais plus qu'elle architecture (ou bibliothèque) ou NULL était différent et ou tout acces lancer une exception spécifique (par ce que sur GNU/Linux, NULL ou pointeur dans le décor, c'est erreur de segmentation par exemple)

mood
Publicité
Posté le 22-09-2003 à 17:19:55  profilanswer
 

n°520512
kadreg
profil: Utilisateur
Posté le 22-09-2003 à 17:21:08  profilanswer
 

chrisbk a écrit :


ptet parce que certaines plateformes n'ont aucun soucis existentiel a travailler sur 0x0


 
Sous DOS (en mode réel), si ma mémoire est bonne, en 0x0, c'est la table des interruptions.


Message édité par kadreg le 22-09-2003 à 17:21:23

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°520514
chrisbk
-
Posté le 22-09-2003 à 17:26:06  profilanswer
 

Neanmoins je continuerais a utiliser NULL en lieu et place de 0, vu que ca m'apporte l'information suivante :
 

Code :
  1. roger(0) // roger prends une valeur numerique en param
  2. roger(NULL); // roger prends un ptr en param


 
Question de lisibilité

n°520517
Taz
bisounours-codeur
Posté le 22-09-2003 à 17:28:51  profilanswer
 

mais le compilo le sait-il ?

n°520518
chrisbk
-
Posté le 22-09-2003 à 17:31:32  profilanswer
 

Taz a écrit :

mais le compilo le sait-il ?


 
vu que NULL est un #define, le compilo en sait rien. A vrai dire il s'en fout.
(je vois pas trop ou tu veux en venir ? a cause de la surcharge de mon exemple qui va faire que le compilo va raler?)

n°520552
Taz
bisounours-codeur
Posté le 22-09-2003 à 18:59:58  profilanswer
 

ben non
 

Code :
  1. void f(int);
  2. void f(char*);
  3. f(33);
  4. f("hello" );
  5. f(NULL);

n°520984
Joel F
Real men use unique_ptr
Posté le 23-09-2003 à 08:52:48  profilanswer
 

J'utilise un truc comme ca pour mes pointeurs invalides (Taz tes commentaires sont les bienvenus) :
 

Code :
  1. template<typename T> T* invalidPtr()
  2. {
  3.   return reinterpret_cast<T*>(0xDEADBEEF);
  4. };
  5. char* toto;
  6. MaClasse* bad = invalidPtr<MaClasse>();
  7. if( toto == invalidPtr<char>() )
  8.   std::cout << "Pointeur invalide" << std::endl;

n°520994
husiana
Posté le 23-09-2003 à 09:13:15  profilanswer
 

merci antp (a tous en fait), mais j'ai un ptit pb, deja j'ai tout codé sur VC++ avec MFC...
et en plus, ce n'est pas une page en HTML mais c'est sous la formie d'une dll, www.bidule.fr/ismona.dll/truc?bob=5000 ...
 
vous connaissez ca...?
 
alors pour recuperer cette page, je le fais a la bourrin...je l'affiche ac un shellexec, ensuite je selectionne tout ac les evenement, je copie, j'ouvre notepad et je colle...
 
je voudrais faire ca proprement quoi ;-)!
 
merci pour tout!


---------------
http://husiana.myftp.org/phpsysinfo
n°521000
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-09-2003 à 09:22:33  profilanswer
 

husiana a écrit :


et en plus, ce n'est pas une page en HTML mais c'est sous la formie d'une dll, www.bidule.fr/ismona.dll/truc?bob=5000 ...


 
ça te renvoie quand même une page HTML, c'est pareil normalement


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°521009
husiana
Posté le 23-09-2003 à 09:27:08  profilanswer
 

dac, merci, et ton code va compiler sous VC++ ? (pas encore eu le tps d'essayer...)

n°521010
chrisbk
-
Posté le 23-09-2003 à 09:28:39  profilanswer
 

husiana a écrit :

dac, merci, et ton code va compiler sous VC++ ? (pas encore eu le tps d'essayer...)


non

n°521012
husiana
Posté le 23-09-2003 à 09:33:32  profilanswer
 

triste :-/!
 
je compile que ca en Bc++ et je fais un shell exec a partir de mon VC++! lol!

n°521020
husiana
Posté le 23-09-2003 à 09:42:42  profilanswer
 

TIdHTTP *bidule = new TIdHTTP.create(NULL);
 
===> il ne connais pas TIdHTTP, y'a une include special...?
 
merci pour tout


---------------
http://husiana.myftp.org/phpsysinfo
n°521025
skeye
Posté le 23-09-2003 à 09:50:24  profilanswer
 

husiana a écrit :

TIdHTTP *bidule = new TIdHTTP.create(NULL);
 
===> il ne connais pas TIdHTTP, y'a une include special...?
 
merci pour tout


 

antp a écrit :

en C++Builder :
 

TIdHTTP *bidule = new TIdHTTP(0);
AnsiString page;
page = bidule->Get("htpp://bidule.com/page.html" );
delete bidule;




 
Quel compilo tu utilises?

n°521026
husiana
Posté le 23-09-2003 à 09:52:27  profilanswer
 

borland c++ 5
 
c mal :-/ ?

n°521030
skeye
Posté le 23-09-2003 à 09:54:36  profilanswer
 

husiana a écrit :

borland c++ 5
 
c mal :-/ ?


bah non...c'est juste que sont truc existe pas sous autre chose que  BC++... [:skeye]  
Regarde dans la doc, ca devrait être indiqué comment te servir de son brol!

n°521034
Konar
Posté le 23-09-2003 à 09:56:10  profilanswer
 

Si t'as deja fait de la prog socket, et en cherchant comment ca marche le http, ca doit se faire en 1h.
 
edit:
ptet plus qu'1h, ca fouette vraiment trop le http. mais ca marche je confirme.


Message édité par Konar le 23-09-2003 à 10:10:43
n°521035
husiana
Posté le 23-09-2003 à 09:56:13  profilanswer
 

vi, j'utilise VC++ d'ab...!
je viens de compiler une premiere fois ac BC++ et comme toute les premieres fois, Make failed...

n°521036
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-09-2003 à 09:58:06  profilanswer
 

husiana a écrit :

borland c++ 5
 
c mal :-/ ?


 
c'est pas pour C++5, c'est pour C++Builder (ce sont deux produits différents)
et si tu as une version antérieure à la 6 il faut downloader les composants Indy séparément (delphi indy dans google)


Message édité par antp le 23-09-2003 à 09:58:25

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°521055
husiana
Posté le 23-09-2003 à 10:14:15  profilanswer
 

c'est pas un compilo de borland c++ builder ?

n°521058
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-09-2003 à 10:15:41  profilanswer
 

si c'est le compilateur, mais faut les librairies (VCL) qui vont avec, et aussi un compilateur Delphi pour Indy (intégré dans C++Builder).


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°521061
husiana
Posté le 23-09-2003 à 10:17:40  profilanswer
 

t'as pas un lien pour le DL, j'ai pas envie de m'inscrire sur borland...

n°521065
chrisbk
-
Posté le 23-09-2003 à 10:22:00  profilanswer
 

je suppose que tu as regardé dans la MSDN pour savoir si la MFC proposait une classe permettant le telechargement de page HTML ?

n°521066
antp
Super Administrateur
Champion des excuses bidons
Posté le 23-09-2003 à 10:22:00  profilanswer
 

husiana a écrit :

t'as pas un lien pour le DL, j'ai pas envie de m'inscrire sur borland...
 


 
heu c'est un truc payant normalement hein :heink: puis t'es pas obligé d'utiliser ça; y a moyen de faire des appels à IE pour downloader un fichier (une dizaine de lignes de code il me semble), mais je ne sais plus comment.


Message édité par antp le 23-09-2003 à 10:22:21

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°521071
Konar
Posté le 23-09-2003 à 10:25:06  profilanswer
 

antp a écrit :


 
heu c'est un truc payant normalement hein :heink: puis t'es pas obligé d'utiliser ça; y a moyen de faire des appels à IE pour downloader un fichier (une dizaine de lignes de code il me semble), mais je ne sais plus comment.


 
les fonctions WinInet, comme InternetOpenUrl() ou InternetReadFile()

n°521119
husiana
Posté le 23-09-2003 à 11:40:49  profilanswer
 

j'ai essayé wininet, alors tout compile niquel, et tt fonctionne presque niquel...:-/!
 
mon buff est vide, voila le code:

Code :
  1. char buff[1024];
  2. DWORD dwRead;
  3. BOOL bRet;
  4. HINTERNET hInternet;
  5. HINTERNET hHttp;
  6. hInternet = ::InternetOpen("BOB", INTERNET_OPEN_TYPE_PRECONFIG , NULL, NULL, 0);
  7.  if(!hInternet)
  8.    MessageBox(Dlg,"Internet open error! Test your system and try again.","42",MB_OK | MB_ICONERROR);
  9.   hHttp = ::InternetOpenUrl(hInternet, "http://www.tomshardware.fr/", NULL, NULL, INTERNET_FLAG_RELOAD, Context);
  10.  if(!hHttp)
  11.   MessageBox(Dlg,"URL open error!","42", MB_OK | MB_ICONERROR );
  12.  if(hInternet)
  13.   InternetCloseHandle(hInternet);
  14.  bRet = ::InternetReadFile(hHttp, buff, 1024, &dwRead);
  15.  if(hHttp)
  16.   InternetCloseHandle(hHttp);
  17.  if(hInternet)
  18.   InternetCloseHandle(hInternet);
  19.  MessageBox(Dlg,buff,"42", MB_OK);


 
PS: il ne faut pas oublier de mettre winInet.lib et #include <wininet.h>
 
pk mon buff est-il vide :'( ?


Message édité par husiana le 23-09-2003 à 11:41:58

---------------
http://husiana.myftp.org/phpsysinfo
n°521201
Konar
Posté le 23-09-2003 à 13:04:36  profilanswer
 

husiana a écrit :


pk mon buff est-il vide :'( ?


 
ben paske tu rates fort :  
deja t'aurais testé ton bRet avec un GetLastError() ca t'aurait indiqué la source de l'erreur.
et y a 2 fois InternetCloseHandle() aussi.

n°521218
husiana
Posté le 23-09-2003 à 13:23:04  profilanswer
 

comment on test bRet ac GetLastError() stp...?
 
et si y'a deux fois InternetCloseHandle() c'est que j'en ai deux a fermer...? non?!


---------------
http://husiana.myftp.org/phpsysinfo
n°521228
Konar
Posté le 23-09-2003 à 13:41:14  profilanswer
 

husiana a écrit :

comment on test bRet ac GetLastError() stp...?
 
et si y'a deux fois InternetCloseHandle() c'est que j'en ai deux a fermer...? non?!


 
euh... tu te foutrais pas de ma gueule la ?
comment tester un BOOL ? ben je dirais comme une autre variable.
 

Code :
  1. if (bRet == TRUE)
  2. {
  3.   // Success
  4. }
  5. else
  6. {
  7.   // Failure
  8.   DWORD dwErr = GetLAstError();
  9.   // tu affiches dwErr (demerdes toi, en plus t'as l'air de faire du C nan ?)
  10. }


 
et pour le InternetCloseHandle(), faut l'appeler seulement quand t'as terminé les opérations sur ta session, et y en a bien 1 de trop (je vois qu'un seul InternetOpen())
.

n°521231
husiana
Posté le 23-09-2003 à 13:42:58  profilanswer
 

vi, je fais du C/UNIX, pas du C++/windows :-/!
 
merci

n°521242
Konar
Posté le 23-09-2003 à 13:48:31  profilanswer
 

husiana a écrit :

vi, je fais du C/UNIX, pas du C++/windows :-/!
 
merci


 
toi t'es dans un bahut de merde.

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [c++] sauvegarder code source IE dans un fichier...

 

Sujets relatifs
Optimisation d'un code en java (JTextArea>codage>JTextArea)Afficher la source du menu suivant:
graph + fichier [résolu]Imprimer ou copier/coller du code avec les COULEURS
lecture ligne a ligne d'un gros fichier texteEditeur fichier PHP pour modif fichier d'un forum
mime_content_type, recup extention d'un fichier[résolu]Problème de compatibilité IE sur un bout de code
[FLASH] pas urgent -- votre sharedobject et php. et fichier txt.[Win32]Comment retrouver l'icône associée à une extension de fichier ?
Plus de sujets relatifs à : [c++] sauvegarder code source IE dans un fichier...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR