Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Umgebungsvariablen auflisten

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.05.2005, 09:56 Uhr
~guenniatwork
Gast


Hallo,

ich suche ne Möglichkeit die Umgebungsvariablen aufzuliste, System-, als auch Benutzervariablen.

Sin ist es die Variabeln in eine Liste einzutragen und deren werte anzuzeigen.

Wär super wenn mir da jemand helfen könnte.

Gruß guenni@work
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.05.2005, 10:06 Uhr
ao

(Operator)



C++:
#include <stdlib.h>

int main (void)
{
    char ** ppEnv = _environ;

    while (*ppEnv)
    {
          printf ("\n%s", *ppEnv);
          ppEnv++;
    }
    return 0;
}



_environ ist ein String-Array, das die C-Library zur Verfügung stellt. Jede Umgebungsvariable steht in einem String. Das Ende der Liste ist durch einen Null-Pointer gekennzeichnet.

Vergleiche MSDN unter dem Stichwort "_environ".

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.05.2005, 10:51 Uhr
~guenniatwork
Gast


Danke.

Aber gibt es auch ne Möglichkeit nur die Namen zu bekommen?
Oder bin ich gezwungen selber Namen von Werten zu trennen?

Gruß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.05.2005, 11:39 Uhr
ao

(Operator)


Keine Ahnung, ob es genau dafür was Fertiges gibt. Aber Selbermachen ist hier wirklich ein Klacks; alles vom Anfang des Strings bis zum =-Zeichen ist der Name.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.05.2005, 11:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


bei int-main kann man auch die variante verwenden:


C++:
int main(int argc,char *argv[], char *envp[])
{
}



envp enthält auch das environment, aber auch als key=value-strings
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.05.2005, 12:15 Uhr
~guenniatwork
Gast


Danke euch.

Es ist jetzt noch ein Problem dazugekommen.

Ich bekomme die Daten nicht in meine ComboBox.
Ich habe eine Controlvariable erstellt für meine Box und will mit InsertItem, InsertString oder anderen Methoden die Liste Füllen.
Ich bekomme immer ein Assertion-Fehler wenn ich meine Contolvariable aufrufe.
Was ist das?

C++:
int CEnvVarDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CDialog::OnCreate(lpCreateStruct) == -1)
        return -1;

    // TODO:  Fügen Sie Ihren spezialisierten Erstellcode hier ein.
    //standard Radiobutton auf Systemyariable
    m_bSysUserVar = FALSE;
    //ComboBox standard auf "Neu setzen"
    m_cbxVarName.AddString("Neu"); //Nur als Bsp.
    return 0;
}



Ich hätte ja ne Vermutung:
Das Steuerelement ist auf nem seperaten Dialog, der auf einem CTabCtrl angezeigt wird.
Vieleicht hängt das irgendwie damit zusammen.

Sonst Irgendjemand ne Idee?
Ich bin schon fast am Verzweifeln.

Gruß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.05.2005, 13:38 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich würde mal sagen die ComboBox existiert bei OnCreate noch nicht und deshalb gibts die assertion. benutz OnInitDialog für die Initialisierung deiner Member
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.05.2005, 13:46 Uhr
~guenniatwork
Gast


Also meine Vermutung war falsch.
Denn bei den anderen Steuerelementen (CEdit, CRadioButton) funktioniert das.
Auch Text über eine Valuevariable kann ich in der ComboBox ausgeben, nur keine Listeneinträge.

Und nochwas ist mir aufgefallen: Ist es eigentlich in Ordnung dass meine Controlvariable den hWnd-Wert 0x00000000 hat?

Hier nochmal mein Quelltext:


C++:
int CEnvVarDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CDialog::OnCreate(lpCreateStruct) == -1)
        return -1;

    // TODO:  Fügen Sie Ihren spezialisierten Erstellcode hier ein.
    //standard Radiobutton auf Systemyariable
    m_bSysUserVar = FALSE;
    m_strVarValue = "";
    //ComboBox standard auf "Neu setzen"
    m_strVarName = "Neu";

    //Liste mit Umgebungsvariablen füllen
    char **pEnv = _environ;
    CString str, strf;
    int i = 0;
    while( *pEnv)
    {
        str.Format("%s",*pEnv);
        m_cbxVarName.InsertString(i,str); //hier kommt die Assertion-Meldung!!
        pEnv++;
        i++;
    }
    return 0;
}




Gruß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
04.05.2005, 14:52 Uhr
~GuenniAtWork
Gast


THX FloSoft.

Funtzt!!

Guß GuenniAtWork
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: