Anonymní profil AnonImouS – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil AnonImouS – Programujte.comAnonymní profil AnonImouS – Programujte.com

 

Příspěvky odeslané z IP adresy 95.103.195.–

AnonImouS
C / C++ › Download v c++
25. 7. 2011   #145147

šak keď sa to spraví aby url a meno súboru dosadené v source code tak to si stiahne automaticky po spustení.

AnonImouS
C / C++ › Download v c++
25. 7. 2011   #145140

Tu je Source Code funkčnééé pri spustený sa tam zadá url adresa a meno súboru ako sa bude volať po stiahnutí. Ale jak to spraviť tak aby sa url a meno súboru zapísalo do source codu a aby sa nemusela url a meno súboru zapisovať po spustení programu. Ako nato??? Za odpoveď. Ďakujem.

TU JE SOURCE CODE

//---------------------------------------------------------------------------------
// Sťahovanie súborov z internetu pomocou WinInet
//---------------------------------------------------------------------------------
#include <iostream>
#include <fstream>
#include <windows.h>
#include <string>
#include <wininet.h>
	// hlavičkový súbor knižnice WinInet
//---------------------------------------------------------------------------------
#define VELKOST_VYROVNAVACEJ_PAMATE	256	// veľkosť vyrovnávacej pamäte použitej
										// pri čítaní internetového súboru
//---------------------------------------------------------------------------------
#pragma comment(lib,"WinInet.lib")	// prilinkovanie knižnice WinInet
//---------------------------------------------------------------------------------
using namespace std;
//---------------------------------------------------------------------------------

int main(int argc, char * argv[])
{
	cout << "Stahovanie suborov z internetu" << endl;
	string url,subor;
	cout << "Zadajte URL suboru: ";
	getline(cin,url);
	cout << "Zadajte nazov suboru na ulozenie: ";
	getline(cin,subor);

	// V prvom rade si deklarujeme premenné, ktoré budeme používať
	HINTERNET spojenie,internetovySubor;
	
	// Teraz si vytvoríme spojenie, inicializujeme aplikáciu na používanie WinInet
	spojenie = InternetOpenA("Moj internetovy prehladavac",
							INTERNET_OPEN_TYPE_PRECONFIG,	// Predvolené nastavenia
							0,								// Žiadne proxy
							0,								
							0);								// Žiadne príznaky
	if (spojenie == 0) // NULL
	{
		cout << "Nie je mozne inicializovaz WinInet" << endl;
		cout << "Kod chyby: " << GetLastError() << endl;
		return 1;
	}
	// Následne otvoríme spojenie so súborom, ktorý je definovaný pomocou URL
	internetovySubor = InternetOpenUrlA(spojenie,		// Inštancia spojenia
										url.c_str(),	// URL adresa súboru
										0,				// Žiadna prídavná HTTP hlavička
										0,				// Dĺžka prídavnej hlavičky	
										0,				// Žiadne príznaky
										0);
	if (internetovySubor == 0) // NULL
	{
		cout << "Nie je mozne vytvorit spojenie so suborom" << endl;
		DWORD kodChyby = GetLastError();
		cout << "Kod chyby: " << kodChyby << endl;
		char chyba[256];
		DWORD chybaVelkost = 255;
		if (InternetGetLastResponseInfoA(&kodChyby,chyba,&chybaVelkost))
			cout << "Popis chyby: " << chyba << endl;
		// Nesmieme zabudnúť zatvoriť už inicializovaný handler s WinInet
		InternetCloseHandle(spojenie);
		return 1;
	}
	// V tomto kroku môžeme zistiť podrobnosti o súbore
	DWORD informacia;
	DWORD velkostInformacie = sizeof(DWORD);
	// Najskôr si zistíme HTTP status kód (napr. status kód 200 znamená OK, 404 znamená súbor nenájdený)
	if (!HttpQueryInfoA(internetovySubor,	// Inštancia nami vytvoreného spojenia so súborom
					HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER,	// Požadujeme status ktorý je číselným typom
					&informacia,			// Sem bude zapísaný výsledok volania
					&velkostInformacie,		// Veľkosť dátovej jednotky informácie
					0))
	{
		cout << "Nie je mozne zistit kod statusu" << endl;
		cout << "Kod chyby: " << GetLastError() << endl;
		InternetCloseHandle(internetovySubor);
		InternetCloseHandle(spojenie);
		return 1;
	}
	cout << "Status odpovede: " << informacia << endl;
	// Ak sa status odpovede nerovná 200, nedostaneme súbor, ktorý sme požadovali
	if (informacia != HTTP_STATUS_OK)
	{
		cout << "Status spojenia NIE je OK" << endl;
		InternetCloseHandle(internetovySubor);
		InternetCloseHandle(spojenie);
		return 1;
	}
	
	// Vytvoríme si vyrovnávaciu pamäť, do ktorej budeme ukladať časti súboru
	char * vyrovnavaciaPamat = new char[VELKOST_VYROVNAVACEJ_PAMATE];
	// Vytvoríme si výstupný súbor
	fstream vystupnySubor(subor.c_str(),	// Názov výstupného súboru
						ios_base::out | ios_base::binary);	// Budeme zapisovať v binárnom móde
	// Premenná, do ktorej sa bude ukladať koľko sme z internetového súboru prečítali
	DWORD precitane = 0;
	// Premenná, do ktorej uložíme celkový počet stiahnutých bajtov
	DWORD stiahnute = 0;

	cout << "Stahujem\t\t\t";
	while (InternetReadFile(internetovySubor,	// Spojenie na náš internetový súbor
							vyrovnavaciaPamat,	// Vyrovnávacia pamäť
							VELKOST_VYROVNAVACEJ_PAMATE,	// Koľko môžeme max. prečítať
							&precitane))		// Koľko WinInet prečítal
	{
		if (precitane == 0)		// Už sme všetko prečítali, ukončiť
			break;
		stiahnute += precitane;
		if (informacia != 0)	// Ak vieme o veľkosti súboru môžeme vypočítať %
			cout << "\rStahujem " << (int)((stiahnute*100)/informacia) << "%";
		else					// Inak len vypíšeme celkový počet stiahnutých B
			cout << "\rStahujem " << stiahnute << " B";
		// Zapísať do vsýtupného súboru
		vystupnySubor.write((const char*)vyrovnavaciaPamat,precitane);
	}
	cout << endl << endl;
	
	// Zatvoríme spojenia
	InternetCloseHandle(internetovySubor);
	InternetCloseHandle(spojenie);
	// Zatvoríme výstupný súbor
	vystupnySubor.close();
	// Nezabudneme vyrovnávaciu pamäť uvoľniť :)
	delete [] vyrovnavaciaPamat;
	return 0;
}
AnonImouS
C / C++ › Chyba C++
25. 7. 2011   #145119

Cawte mám program napísaní v Dev C++. Kompilacia prebehne úspešne bez chyby ale žiadny exe súbor sa nevytvorí. A keď dám Preložiť a spustiť tak to vypíše Zdrojový kód nie je preložený. Kde môže byť chyba?? Za odpoveď. Ďakujem.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý