globale variable ?!



  • Hallo
    ich habe folgendes Problem: ich habe 2 NumericUpDowns. Beim Drücken des Buttons werden die Werte ausgelesen und gespeichert. Dieses Projekt ruft die .exe eines anderen Programmes auf. Im Source Coode dieses zweiten Projektes sollen die zwei int-Werte verwendet werden.
    Bin bis jetzt so vorgegangen:

    1. Deklaration der beiden Variabelen in UserPreferences.h

    extern int min_disp;
    extern int max_disp;
    

    2. Definition in Form1.h

    int min_disp;
    int max_disp;
    

    3. Auslesen der NumericUpDowns und speichern dieser Werte (auch in Form1.h)

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)
    		 {
    
    			 if(change1 == true & change2 == true)
    			 {
    				Decimal value_min = numericUpDown1->Value; // Min Disparity Value
    				Decimal value_max = numericUpDown2->Value; // Max Disparity Value
    
    				if(numericUpDown1->Value >= numericUpDown2->Value)
    				{
    					numericUpDown1->Value=numericUpDown2->Value-1;
    					MessageBox::Show("ERROR: MIN-Value is bigger or equal than MAX-Value");
    				}
    
    				else
    				{
    
    				min_disp = int(value_min);
    				max_disp = int(value_max);
    
    				MessageBox::Show("Min Disparity "+min_disp+"\nMax Disparity "+max_disp); //test 
    				}
    			 }
    
    			 else
    			 {
    				 MessageBox::Show("Please enter values for Disparity !");
    			 }
    
    		 }
    

    Bis hier hin funktioniert alles einwandfrei. Aber dann folgendes:

    4.Ich habe nun ein einem anderen Projekt die Header "UserPreferences.h" in das include-Verzeichnis hinzugefügt.
    In diesem Projekt möchte ich MIN_DISPARITY gleich min_disp setzen. (für max dasselbe)
    Habe bisher folgendes gemacht:

    #include "UserPreferences.h"
    int MIN_DISPARITY = min_disp;
    int MAX_DISPARITY = max_disp;
    

    Leider funktioniert das nicht. für MIN_DISPARITY und MAX_DISPARITY werden keine Werte gesetzt.
    Danke schon mal für eure Hilfe.



  • ROFL!!!

    Du erwartest doch nicht wirklich, daß das so funktioniert???
    Wenn du wirklich zwei verschiedene Prozesse (EXE-Dateien) hast, dann lautet das Stichwort "InterProcess Communication (IPC)" (aber ich denke, das wird zu hoch für dich sein - sonst hättest du gar nicht erst solchen Code ausprobiert).

    Und wenn das eine Programm das andere startet, dann kannst du auch einfach die Werte als Kommandozeilenparameter übergeben.



  • das ist mir zu hoch ja .... deswegen habe ich ja gefragt wie man solch ein Problem angeht....
    wir haben es inzwischen anders gelöst, indem wir die werte in einem textfile zwischenspeichern und dann wieder einlesen...



  • Deine zwei Prozesse könnten einfach über Pipes oder Sockets kommunizieren, so schwer is das gar nicht.


Anmelden zum Antworten