Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] Programma con socket in DEV C++

    Salve a tutti, ho scritto questo programma in c++ (di prova) per scaricare una pagina HTML da un sito, e successivamente per effettuare il download di un immagine.
    Problema: da' quel che mi sono studiato, il sorgente è corretto sintatticamente, molto probabilmente è un errore delle librerie non presenti in Dev C++, sapete dirmi dove posso scaricarne di equivalenti, o... come usare equivalenti funzioni di download?

    codice:
    #include <iostream.h>
    #include <Windows.h>
    #include <cstdio>
    #include <stdio.h>
    #pragma comment(lib, "urlmon.lib")
    #define l 9999
    
    int main(){
        FILE *fp;
        char link[l];
        char nomefile[l]="temp.zh";
        char netURL[l];
        system("color A");
        system("title Netlog Image Grabber");
        cout<<"Inserisci l'url della pagina di netlog nella quale vuoi trovare il link dell'immagine.\n";
        cin.getline(netURL,l);
        HRESULT result;
        cout<<"Inizio Fase 1: Download... Attendi..";
        result=URLDownloadToFileA(NULL,netURL,nomefile,NULL,NULL);
        cout<<"OK.\nInizio Fase 2: Ricerca URL Immagine..";
        cout<<"Apertura file..\n";
        fp=fopen(nomefile,"r");
        char tofind[l]="id=\"photoNote\"";
        int len1;
        len1=strlen(tofind);
        char source[l];
        int len2=0;
        int y=0;
        int x=0;
        int k=5;
        int count=0;
              cout<<"...WORKING...\n";
              while((!feof(fp))&&(x==0)){
                                         fscanf(fp,"%s",&source);
                                         if (x==0){
                                                   len2=0;
                                                   y=0;
                                                   while ((len2<len1)&&(y==0)){
                                                         if (tofind[len2]!=source[len2]){
                                                                                        y++;
                                                                                        }
                                                                                        len2++;
                                                         }
                                                         if (y==0){
                                                                   fscanf(fp,"%s",source);
                                                                   x=1;
                                                                   }
                                                   }
                                         }
              cout<<"Chiusura file...\n";
              fclose(fp);
              if (y==0){
              len1=strlen(source);
              while (k<(len1-1)){
                                 link[count]=source[k];
                                 count++;
                                 k++;
                                 }
              cout<<"+-------------+\n";
              cout<<link;
              cout<<"\n+-------------+\n";
              cout<<"Link Trovato!\n";
              cout<<"Premi un tasto per scaricare l'immagine nella directory corrente..\n";
              system("pause>nul");
              char nomejpg[l];
              cout<<"Nome immagine? (aggiungici un .jpg alla fine del nome)\n";
              cin.getline(nomejpg,l);
              cout<<"Downloading\n["<<link<<"]->["<<nomejpg<<"]\n";
              result=URLDownloadToFileA(NULL,link,nomejpg,NULL,NULL);
              cout<<"Downloaded!\n";
              }
        if (y!=0){
                 cout<<"Link NON trovato o file NON corretto.\n";
                 }
        cout<<"Premi un tasto per uscire...\n";
        system("pause>nul");
        return 0;
    }
    ..Avete soluzioni?
    Sto' sbagliando qualcosa?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Mi sbaglio o non hai parlato dell'errore che hai?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    codice:
    19 C:\Users\Shotokan\Desktop\Netlog-PHP.cpp `URLDownloadToFileA' undeclared (first use this function)
    questo è se metto la function URLDownloadToFileA,
    se metto la function URLDownloadToFile viene:
    codice:
    19 C:\Users\Shotokan\Desktop\Netlog-PHP.cpp `URLDownloadToFile' undeclared (first use this function)
    Da quel che so' dovrebbe già essere inclusa in una delle librerie riportate, o se ne serve un altra.. be' sarei felice di saperla

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    La libreria da considerare sarebbe la urlmon.lib

    Prova ad aggiungere referenziare dinamicamente la libreria e la funzione ...

    In pratica, all'inizio aggiungi

    codice:
    typedef HRESULT (CALLBACK* UDFA)(LPUNKNOWN,LPCTSTR,LPCTSTR,DWORD,DWORD);
    e nel main, proprio all'inizio, scrivi

    codice:
     UDFA URLDownloadToFileA;
     HINSTANCE hDLL = LoadLibrary("urlmon.dll");
     URLDownloadToFileA = (UDFA)GetProcAddress(hDLL, "URLDownloadToFileA");
    mentre poco prima della fine del main scrivi

    codice:
     FreeLibrary(hDLL);
    In questo modo, quando ti serve, dovresti poter usare tranquillamente la

    URLDownloadToFileA

    Ovviamente toglierai la pragma ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Grazie 1000! ora il programma funziona alla grande! ^^

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da Shotokan
    Grazie 1000! ora il programma funziona alla grande! ^^
    Di nulla ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.