C++ mit SQL verbinden?

02/17/2011 17:55 MrSm!th#16
Nein, du kannst eine Variable nicht 3.4 nennen.

Eine Funktion GETURLPAGE ist mir nicht bekannt und übrigens, warum nutzt du sprintf, um eine statische URL in den Buffer zu kopieren?
Schreib doch gleich:
Code:
char URL_V[] = "hier die url";
02/17/2011 18:00 Deda94#17
Hier die GETURLPAGE Funktion...

Code:
int GETURLPAGE(char *link, char *buffer, int maxsize)
{
  HINTERNET hSession;  
  HINTERNET hURL;
  DWORD dwBYTEsRead;
  int   ok;

  ok=0;
  buffer[0]=0;
  hSession = InternetOpen(                         // Make internet connection.
                  "Microsoft Internet Explorer",   // agent
                  INTERNET_OPEN_TYPE_PRECONFIG,    // access
                  NULL, NULL, 0);                  // defaults
  if (hSession) {
	  hURL = InternetOpenUrl(  // Make connection to desired page.
             hSession,                        // session handle
             link,                             // URL to access
             NULL, 0, 0, 0);                 // defaults
      if (hURL) {
          // Read page into memory buffer.
          InternetReadFile(
                hURL,                // handle to URL
                (LPSTR)buffer,       // pointer to buffer
                (DWORD)maxsize,      // size of buffer
                &dwBYTEsRead);       // pointer to var to hold return value

          // Close down connections.
          InternetCloseHandle(hURL);
          buffer[dwBYTEsRead]=0;     // end string
          ok=(int)dwBYTEsRead;
      }

      InternetCloseHandle(hSession);
  }
  return ok;
}
Ok ausser das mit sprintf hast du mir nicht viel geholfen xD


Also wie die Funktion ist, würde sie dann die Version abfragen?
02/17/2011 19:06 MrSm!th#18
Quote:
Originally Posted by ToxicLibrary™ View Post
Ok ausser das mit sprintf hast du mir nicht viel geholfen xD
woran das wohl liegen mag...
Ich habe außerdem schonmal deinen Code dazu gebracht, dass er kompiliert werden kann :p
Quote:
Also wie die Funktion ist, würde sie dann die Version abfragen?
Die Funktion CheckVersion? Ja, sie sollte funktionieren.
02/17/2011 19:15 Deda94#19
Aber was mir fehlt ist das er vergleicht... Dort steht nirgendwo was er für einen Text checken soll.. :(


...Stimmt hast mir mal geholfen xD.. war i-was mit L i-wo davor setzen oder? ^^
02/18/2011 10:22 MrSm!th#20
Du würdest dann einfach schreiben:

Code:
bool IsOwnVersion = false;
bool VersionChecked = false;
char OwnVersion[] = "3.4";

void CheckVersion()
{
    if (!VersionChecked)
    {
        sprintf(szURL_V, "httü://TEST.DE/versionTEST.txt");
        if(GETURLPAGE(szURL_V, VersionResult, 256) != 0)
        {
            if(strcmp(VersionResult, OwnVersion) == 0)
                IsOwnVersion = true;
        }
        else
        {
            ExitProcess(0);
        }
        VersionChecked = true;
    }
}
Wenn du in deiner Version.txt nur die Version und nichts anderes drin hast, sollte es so klappen.
Du vergleichst eben den Text mit OwnVersion und falls er gleich ist, wird IsOwnVersion (vorher 3.4) auf true gesetzt.
Und wenn das true ist, kannst du machen, was auch immer du machen willst, wenn die Versionen gleich sind.
Ich würde aber lieber die globale Variable IsOwnVersion entfernen und die CheckVersion zu bool machen. Dann gibst du in dem Fall true zurück, anstatt eine globale Variable auf true zu setzen, ist ein besserer Stil.

Nein, das war nicht das mit dem L, man kann Variablen nicht "3.4" nennen!
02/18/2011 13:18 Deda94#21
Alles perfekt und richtig...

Was zum Teufel sollen diese 2 Fehler?

Code:
1>cBase.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""public: int __thiscall Checker::CheckActive(void)" (?CheckActive@Checker@@QAEHXZ)".
1>C:\Users\Toxic\Desktop\Toxic VIP\Release\Toxic.dll : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

Die Class:

Code:
#ifndef _ACTIVECHECKER_H
#define _ACTIVECHECKER_H


#include <windows.h>
#include <wininet.h>
#include <winsock.h>
#include <urlmon.h>
#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "urlmon.lib")

class Checker
{
public:
	BOOL CheckActive();
	INT GETURLPAGE();
private:
	CHAR * GetDirectoryFile(char *filename);
};

#endif

Die Funktionen:

Code:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <fstream>
#include <stdio.h>
#include <time.h>
#include "activechecker.h"

int Checker::GETURLPAGE(char *link, char *buffer, int maxsize)
{
  HINTERNET hSession;  
  HINTERNET hURL;
  DWORD dwBYTEsRead;
  int   ok;

  ok=0;
  buffer[0]=0;
  hSession = InternetOpen(                         // Make internet connection.
                  "Microsoft Internet Explorer",   // agent
                  INTERNET_OPEN_TYPE_PRECONFIG,    // access
                  NULL, NULL, 0);                  // defaults
  if (hSession) {
	  hURL = InternetOpenUrl(  // Make connection to desired page.
             hSession,                        // session handle
             link,                             // URL to access
             NULL, 0, 0, 0);                 // defaults
      if (hURL) {
          // Read page into memory buffer.
          InternetReadFile(
                hURL,                // handle to URL
                (LPSTR)buffer,       // pointer to buffer
                (DWORD)maxsize,      // size of buffer
                &dwBYTEsRead);       // pointer to var to hold return value

          // Close down connections.
          InternetCloseHandle(hURL);
          buffer[dwBYTEsRead]=0;     // end string
          ok=(int)dwBYTEsRead;
      }

      InternetCloseHandle(hSession);
  }
  return ok;
}

BOOL Checker::CheckActive()
{
	char OwnVersion[] = "3.4";
	char szURL_V[256];
	char VersionResult[256];

        sprintf(szURL_V, "http://*ZENSIERT*.de/version/version.txt");
        if(GETURLPAGE(szURL_V, VersionResult, 256) != 0)
        {
            if(strcmp(VersionResult, OwnVersion) == 0);
        }
        else
        {
            ExitProcess(0);
        }
    }

CHAR * Checker::GetDirectoryFile(char *filename){
	static char path[320];
	strcpy(path, dlldir);
	strcat(path, filename);
	return path;
}

Der Fehler ist ekelhaft, angeblich nicht aufgelöste Verweise O.o