Ergebnis 1 bis 3 von 3
  1. #1
    Bad Times Virus
    Registriert seit
    14.03.2009
    Beiträge
    579

    Standard Strukturen und Threads

    Hallo,
    wie kann man mit Strukturen in Threads arbeiten?
    Code:
    //struct
    struct sGetFlood{
        string server;
        string url;
        int time;
    } *pGetFlood;//msdn
    //threadfunc
    DWORD WINAPI HTTPGetfloodThread(LPVOID Param){
      pGetFlood param;
      param=(pGetFlood) Param;//msdn
    .....
    }
    //calling func
    int HTTPGetflood(string target,string length){
         pGetFlood param;
              ...
         count=target.find('/');
         param.server=target.substr(0,count);
         param.url=target.substr(count+1);
         param.time=Str2Int(length);
               ....
         
        HANDLE Threads[GETFLOOD_THREADS];
        DWORD ThreadID[GETFLOOD_THREADS];
        for(int i=0;i<=GETFLOOD_THREADS;i++)
        {
            Threads[i] = CreateThread( NULL, 0, HTTPGetfloodThread,              (LPVOID)param, 0, &ThreadID[i] ); 
        }
             ...
    }
    von hier habe ich die mit "//msdn" markierten zeilen.
    Code:
    c:\dokumente und einstellungen\wbot dev-user\desktop\bot\httpgetflood.h(4) : error C2146: syntax error : missing ';' before identifier 'param'
    c:\dokumente und einstellungen\wbot dev-user\desktop\bot\httpgetflood.h(4) : error C2065: 'param' : undeclared identifier
    c:\dokumente und einstellungen\wbot dev-user\desktop\bot\httpgetflood.h(5) : error C2440: '=' : cannot convert from 'struct sGetFlood *' to 'int'
            This conversion requires a reinterpret_cast, a C-style cast or function-style cast
    c:\dokumente und einstellungen\wbot dev-user\desktop\bot\httpgetflood.h(5) : error C2146: syntax error : missing ';' before identifier 'Param'
    c:\dokumente und einstellungen\wbot dev-user\desktop\bot\httpgetflood.h(10) : error C2228: left of '.server' must have class/struct/union type
    c:\dokumente und einstellungen\wbot dev-user\desktop\bot\httpgetflood.h(10) : error C2228: left of '.c_str' must have class/struct/union type
    c:\dokumente und einstellungen\wbot dev-user\desktop\bot\httpgetflood.h(14) : error C2228: left of '.time' must have class/struct/union type
    (die letzten 3 gehen logischerweiße auch weg wenn die oberen gelöst sind.)

    Vielen Dank für die Hilfe

  2. #2

    Registriert seit
    17.06.2009
    Beiträge
    559

    Standard

    Du musst deinen struct Pointer natürlich noch bekannt geben und dir ein wenig Speicher für den Parameter holen, da dieser sonst wieder verfällt, wenn die Funktion verlassen wird. (Es sei denn du wartest mit WaitForMultipleObjects() auf diese.)

    Ansonsten müsste es sich so eigentlich kompilieren lassen, wenn der Rest auch keine Fehler enthält:
    Code:
    //struct
    typedef struct sGetFlood{
        string server;
        string url;
        int time;
    } sGetFlood,*pGetFlood;//msdn
    //threadfunc
    DWORD WINAPI HTTPGetfloodThread(LPVOID Param){
      pGetFlood param;
      param=(pGetFlood) Param;//msdn
    .....
    }
    //calling func
    int HTTPGetflood(string target,string length){
         pGetFlood param;
              ...
         count=target.find('/');
         param->server=target.substr(0,count);
         param->url=target.substr(count+1);
         param->time=Str2Int(length);
               ....
         param = (pGetFlood) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,sizeof(sGetFlood));
        HANDLE Threads[GETFLOOD_THREADS];
        DWORD ThreadID[GETFLOOD_THREADS];
        for(int i=0;i<GETFLOOD_THREADS;i++) // < reicht ;)
        {
            Threads[i] = CreateThread( NULL, 0, HTTPGetfloodThread,              (LPVOID)param, 0, &ThreadID[i] ); 
        }
             ...
    }

  3. #3
    Bad Times Virus
    Registriert seit
    14.03.2009
    Beiträge
    579

    Standard

    danke alles funktioniert

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •