[C++] String aus WebSeite auslesen.

Golumserbe

Grünschnabel
Ich möchte wenn eine Web Seite z.b. blablab.de/check/gr.php die Zahl 54 hat, dass dann ein Prozess weiter läuft und wenn meine Zahl 55 ist das dann eine Message Box aufkommt und einen Nachricht anzeigt.

Beispiel:


Code:
C++

if(String==54)
{
//blabalbal
}

if(String==55)
{
//blabalbal
}

Ich habe keine Ahnung wie ich anfangen könnte und meine Fähigkeiten sind leider nur begrenzt weil ich C++ seit 3/4 Jahr angefangen habe zu lernen. Ich arbeite in einem Win32 Projekt .dll.

Wäre nett wenn mir einer helfen könnte.
 
Moin,

Ich möchte wenn eine Web Seite z.b. blablab.de/check/gr.php die Zahl 54 hat, dass dann ein Prozess weiter läuft und wenn meine Zahl 55 ist das dann eine Message Box aufkommt und einen Nachricht anzeigt.

Beispiel:
Code:
C++

if(String==54)
{
//blabalbal
}

if(String==55)
{
//blabalbal
}

hmm, das habe ich jetzt nicht wirklich verstanden ...

Hast Du nun eine Zahl (int?) mit dem Wert 54 oder wirklich einen String ("54") :confused:

Aber einen Vergleich "ist Stringvalue == Intervalue" gibt es nicht - Du kannst nur gleiche Datentypen vergleichen und musst ggf. zuvor casten!

Gruß
Klaus
 
Moin,

Ich möchte nur die Zahlen checken. Also wenn die .php datei 54 sagt, das dann ein der Code ausgeführt wird.
if(Vabriale==54)
{
}...

schon klar, nur kannst so wie in Deinem ersten Post geschrieben, halt nicht vergleichen :rolleyes:
Es hängt halt davon ab, mit welchen Datentyp Du ausliest .....

Wenn es ein Integer ist :
C++:
const int iIrgendwas = 54;  // immer mit Konstanten arbeiten, NIE mit MAGIC  NUMBERS ******
const int iWasAnderes = 55;  // hier im Kommentar erklären, wofür diese Werte überhaupt stehen !!

int iWertVonWebsite = ... // Wert von Website
// ...
if( iWertVonWebsite == iIrgendwas )
{
    // tue irgendwas
}
else if( iWertVonWebsite == iWasAnderes ) // würde es immer mit ELSE machen, spart ggf. eine Prüfung !!
{
    // tue was anderes
}

Ist es jedoch ein String :
C++:
const string strIrgendwas = "54";  // immer mit Konstanten arbeiten, NIE mit MAGIC  NUMBERS ******
const string strWasAnderes = "55";  // hier im Kommentar erklären, wofür diese Werte überhaupt stehen !!

string  strWertVonWebsite = ... // Wert von Website
// ...
if( strWertVonWebsite.compare(strIrgendwas) )
{
    // tue irgendwas
}
else if( strWertVonWebsite.compare(strWasAnderes) )
{
    // tue was anderes
}

Gruß
Klaus
 
Zuletzt bearbeitet:
Vielen dank. Wegen der Abfrage auf die Web Seite funktioniert nicht ganz richtig. Habe Probleme damit.

Code:
char* Abfrage(char* Address)
{
	char Return[10000] = "";
   char Res[100000] = "";
   char HttpAddress[1024] = "";
   bool ifHttp = false;

   if(!strstr(Address,"http://"))
   {   
      sprintf(HttpAddress,"http://%s", Address);
      ifHttp = true;
   }

   HINTERNET hOpen = InternetOpen("Internet Explorer 7.0",INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL);
   HINTERNET hFile = InternetOpenUrl(hOpen,ifHttp?HttpAddress:Address, NULL, NULL, INTERNET_FLAG_RELOAD, NULL);
   InternetReadFile(hFile,Return,sizeof(Return),(LPDWORD)Res);

   InternetCloseHandle(hOpen);
   InternetCloseHandle(hFile);
IWert=Wert;
   return Return;
}

Ich denke das der Syntax falsch ist und stecke fest...
 
Moin,

Wegen der Abfrage auf die Web Seite funktioniert nicht ganz richtig. Habe Probleme damit.
ääh - bitte was :confused:
Wo genau hast Du welches Problem ?

Code:
char* Abfrage(char* Address)
{
	char Return[10000] = "";
   char Res[100000] = "";
   char HttpAddress[1024] = "";
   bool ifHttp = false;

   if(!strstr(Address,"http://"))
   {   
      sprintf(HttpAddress,"http://%s", Address);
      ifHttp = true;
   }

   HINTERNET hOpen = InternetOpen("Internet Explorer 7.0",INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL);
   HINTERNET hFile = InternetOpenUrl(hOpen,ifHttp?HttpAddress:Address, NULL, NULL, INTERNET_FLAG_RELOAD, NULL);
   InternetReadFile(hFile,Return,sizeof(Return),(LPDWORD)Res);

   InternetCloseHandle(hOpen);
   InternetCloseHandle(hFile);
IWert=Wert;
   return Return;
}
Ich denke das der Syntax falsch ist und stecke fest...

Leider kenne ich den INet-Zugriff unter C/C++ nicht so genau und kann da nicht viel zu sagen, allerdings fallen mir die Zeilen à la
Code:
char Res[100000] = "";
auf ! Eine solche Zuweisung würde allenfalls bei Strings gehen, Char-Arrays solltest Du vlt. mit memset initialisieren
Code:
string sRes = "";
// und 
char cRes[100000];
memset( &cRes, 0x20, sizeof cRes );

Gruß
Klaus
 
Hi.
allerdings fallen mir die Zeilen à la
Code:
char Res[100000] = "";
auf ! Eine solche Zuweisung würde allenfalls bei Strings gehen, Char-Arrays solltest Du vlt. mit memset initialisieren
Warum sollte das nicht gehen?

Was ist für dich der Unterschied zwischen einem char-Array und einem (C-)String?

Mal abgesehen davon, das die Variablen überhaupt nicht initialisiert werden müssen, da die Parameter bei InternetReadFile alle OUT Parameter sind.

@Golumerbse: Du solltest uns evtl. mal verraten was nicht geht. Wenn die Syntax falsch wäre, bekommst du Compiler-Fehler. Welche?

Gruß

PS: Wer sagt eigentlich "der Syntax"? Syntax ist ein Femininum.

\edit: @Golumerbse: Du gibst dort einen Zeiger auf eine lokale Variable zurück. Das kann nicht funktionieren, da lokale Variablen sofort nach dem return weggeräumt werden. Du könntest z.B. einen std::string zurückgeben.

Und du castest zuviel. Grundsätzlich: wenn du castest um einen Compilerfehler wegzubekommen, dann wird es falsch.
C++:
std::string Abfrage(const char* addr) {
  DWORD bytesRead;

  if (InternetReadFile(hFile,Return,sizeof(Return), &bytesRead)) {
    return std::string(Return, Return + bytesRead);
  } else {
    // Fehler. Und nun?
  }
}
 
Zuletzt bearbeitet:
Zurück