Probleme bei Parameterübergabe

Hi!

Mein Programm soll bei einer Eingabe eines Chars verschiedene Aktionen ausführen, wie bspw. Thread suspendieren, zaehler (global) auf 0 setzen und bei einer Eingabe eines Chars „i“ soll ein Paramter an die Funktion tuwas übergeben werden, jedoch wird dieser Parameter nicht übergeben.

  1. Der Funktion tuwas() wird par = 1 übergeben,
  2. Der Funktion tuwas() soll par = 10 übergeben werden.

Hier ein paar Codeschnipsel:

#include 
#include 
#include 
#include 
#include 

using namespace std;

unsigned \_stdcall tuwas(void \* arg);
DWORD zaehler = 0;

void main()
{
 unsigned int thid;
 HANDLE hthread;
 unsigned ret;
 DWORD par;
 char input = 'x';
 DWORD back;

 par = 1;
 ret = \_beginthreadex(NULL,0,tuwas, (void \*) par, 0, &thid);
 hthread = (HANDLE) ret;
 printf("ID= %d ,Handle= %d\n", GetCurrentThreadId(),hthread);

 while(input != 'b')
 { 
 input = (char)getche();
 if (input == 'a')
 {
 ...

 else if (input == 'i')
 {
 par = 10;
 //was muss hier rein um 10 an tuwas zu übergeben 
 }
 ...


unsigned \_stdcall tuwas(void \* arg)
{
 for (int i = 0; i 

Eine doppelte while-Schleife habe ich ohne Erfolg probiert, dann macht 
mein Programm gar nix mehr wenn ich i drücke... auch einiges anderes habe ich ausprobiert, aber es funktioniert alles nicht... 

Freue mich über jede Hilfe.

Danke im voraus!

Gruss SanSebastian

Hi SanSebastian

ich hab zwar schon lang nichts mehr mit C++ gemacht, aber eins ist mir aufgefallen, bei deiner Funktion tuwas hast du als Parameter void * arg angegeben. Das ist ein Zeiger wenn ich mich nicht irre. Demnach addierst du in deiner Funktion tuwas nicht die übergebene Zahl sondern die Speicheradresse.

Aber wie gesagt, ich hab schon lang nichts mehr mit C++ gemacht.

Gruß Michi

Hallo SanSebastian,

Ich weiss nicht, was Du mit Threads vorhast, aber ich kann Dir folgendes raten:

Die tuwas() kriegt einen „void *“, daher kannst Du die 10 nicht direkt übergeben, aber Du kannst sie auf eine int schreiben, und dann die Adresse von dieser an die tuwas() übergeben (gekürzt):

voi on\_i(int par)
 {
 tuwas ( & par );
 }

int main()
 {
 while(input != 'b')
 { 
 // ====\> nur "getch()", ohne 'e'
 input = (char)getch();

 if (input == 'a')
 {
 }
 else if (input == 'i')
 {
 on\_i(10);
 }
 }
 }

Was Du dann noch brauchst, kannst Du in der on_i() dazu schreiben.

lg
Martin B

Hallo Martin,

die Antwort leuchtet ein, aber sie funktioniert nicht, danke trotzdem…

  1. habe getche() in getch() geändert.
  2. Habe on_i implementiert
  3. Alles funktioniert wie bisher

Das Programm hängt sich dann auf, wenn ich „i“ eingebe.
Freue mich noch immer über jede Hilfe!

P.s. die Threads dienen zu Übungszwecken…
und ich versuche ab jetzt früher zu antworten!

GrüsSE

Gruss Sebastian

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]