Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo

Zuerst einmal ich bin Anfänger und weiß auch nciht ob ich im richtigen Forum bin.

Also für ein Schulprojekt muss ich eine Globalvariable aus lesen mit c++.

Natürlich habe ich es schon mit GetEnvoirmentVariable versucht , und auch mit der Kurzform.

Das Funktioniert so weit auch, aber das ganze muss laufend Eingelesen werden.

Ich habe nun das problem das wenn ich das Kompelierte Programm starte wird der richtige Wert eingelesen , danach aber nicht mehr verändert wird.

Wenn ich morgen in der Schule bin kann ich noch den Qullecode posten.

Ich hoffe es wurde klar was ich meine.

Über antworten würde ich mich Freuen.

Geschrieben

Arrg Anfänger fehler:rolleyes:

aber Danke für die schnelle Antwort.

Mit getenv habe ich es auch schon probiert (mir war nur der befehl entfallen)

Das ist ja relativ leicht Raus zufinden.

Das Problem ist nur das sich dort bei mir der Wert auch bei mehrmaligen einlesen nicht ändert nach dem Programm start, auch wenn sich die Umgebungsvariable ändert.

Ich muss über diesen Weg laufend Daten eines Sensor einlesen.

Geschrieben

Ja wie versprochen der Quellcode:

#include <iostream>

#include <fstream>

#include <istream>

#include <cstdlib>

#include <stdio.h>

#include <windows.h>

#include <conio.h>


using namespace std;


int main () {



	ofstream outDatei ("c:\\Dokumente und Einstellungen\\Administrator\\Desktop\\Herbstakademi 2009\\schreiben\\in.dat");

	char winkel[256]="34.3";


	GetEnvironmentVariable("winkel", winkel, 255);

	cout << "Winkel in Zentigrad = " << winkel << ".\n";



	//cin >> winkle;



	outDatei << winkel << endl;


		return 0;

}

Wenn ich das ganze in der Schleife Ausgebe wird immer der Gleiche wert ausgegeben auch wenn sich die systemvariable verändert hat.

Geschrieben

Nein Nein das wird schon überschrieben.

DerDie variable setzt ein anderes Programm, das einen Sensor ausliest.(Ich weiß sehr aufwendig hat aber einen anderen Hintergrund)

Meinten sie den Rüchgabe wert des Programms?

Der ist -1073741510

Geschrieben
Der ändert sich bei jeden Start des Programmes, wie er es soll, aber im lauf des Programms ändert sich der Rückgabe wert nicht
Der Rückgabewert, nicht der Wert der Umgebungsvariablen. GetEnvironmentVariable gibt ein DWORD zurück. Aber daran liegt es anscheinend sowieso nicht.

Ich vermute einfach mal, dass der Mechanismus für das Setzen der Umgebungsvariablen sich nicht auf dein Programm auswirkt. Jeder Prozess hat nämlich seinen eigenen Satz an Umgebungsvariablen. Dein Programm bekommt beim Start eine Kopie, und danach ändert sich nichts mehr.

Wie genau setzt denn dieses "andere Programm" die Variable?

Geschrieben
Du hast aber doch hoffentlich den Aufruf von GetEnvironmentVariable in die Schleife gesetzt, und nicht nur die Ausgabe, oder?

Welche Schleife?

Geschrieben
Jeder Prozess hat nämlich seinen eigenen Satz an Umgebungsvariablen. Dein Programm bekommt beim Start eine Kopie, und danach ändert sich nichts mehr.

Ich ergänze hierzu einmal: Umgebungsvariable ? Wikipedia

Es ist üblich, dass die Menge der Umgebungsvariablen pro System-Prozess gespeichert werden. Änderungen, die ein Prozess am Bestand der Variablen vornimmt, sind nur für ihn selbst und für Prozesse, die von ihm gestartet wurden (Child-Prozesse), gültig.

Du wirst, so lange das Programm läuft immer wieder den gleichen Wert auslesen und niemals einen neu gesetzten Wert bekommen. Stell Dir das wie eine "Sandbox" vor, in der wenn Du das Programm startet alles "statisch" ist.

Du wirst wohl nicht drumherum kommen, eine entsprechende Library in Dein Programm aufzunehmen, das direkt mit dem Sensor kommuniziert. Ich weiß jetzt nicht, wie der Sensor an das System angeschlossen ist, aber z.B: via USB kann man sich recht leicht an die Events anhängen, wie die technischen Daten des Sensors zu verarbeiten sind, müsstest Du dann beim Hersteller erfragen bzw findest Du in TechPapers

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...