Rechnernamen herrausfinden



  • hallo!
    ich habe ein kleines Problem.
    Ich habe vor alle Rechnernamen der Rechner im Netzwerk auszugeben..

    int i;
    //------------------------------------------------------------
    char comp()
    {
    char name[512];
    DWORD len = sizeof(name);
    GetComputerName(name,&len);
    return name[i];
    }
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
    std::ofstream ofs("\\\\Server-2\\Suche\\"+comp()+".txt");
    suche(Edit1->Text, ofs);
    }
    

    jetzt kommt aber folgender fehler:

    [C++ Error] Unit2.cpp(81): E2085 Invalid pointer addition

    in der folgenden Zeile:

    std::ofstream ofs("\\\\Server-2\\Suche\\"+comp()+".txt");
    

    woran könnte das leigen?was könnte falsch sein?
    habe zuerst
    return comp();
    geschrieben..ging aber leider auch nicht..

    wo könnte der fehler sein??
    Danke für Hilfe..



  • Hi,

    Das liegt daran das du versuchst char const * mit char const * zu addieren das geht _so_ nicht

    Probiers mal so:

    int i;
    //------------------------------------------------------------
    char *comp(char * comp , DWORD size)
    {
      GetComputerName(name,&len);
      return name;
    }
    
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
      char name[512] = {0};
      DWORD len = sizeof(name);
      AnsiString tmp = "\\\\Server-2\\Suche\\";
      tmp += comp(name,len);
      tmp += AnsiString(".txt");
      std::ofstream ofs(tmp.c_str());
      suche(Edit1->Text, ofs);
    }
    

    MfG



  • Achso okay.vielen dank, geht so auch noch nicht ganz.

    Zeigt jetzt fehler an

    [C++ Error] Unit2.cpp(81): E2451 Undefined symbol 'name'
    [C++ Error] Unit2.cpp(81): E2451 Undefined symbol 'len'

    in dem bereich

    char *comp(char * comp , DWORD size)
    {
      GetComputerName(name,&len);
      return name;
    }
    

    habe

    char name[512] = {0};
      DWORD len = sizeof(name);
    

    hoch genommen..
    dann wiederum kommt ein fehler:
    [C++ Warning] Unit2.cpp(76): W8075 Suspicious pointer conversion

    naja werde mal schauen woran das leigen könnte das er das beides nicht übernimmt..
    vielen dank für die hilfe



  • Mein Fehler,

    ich hab vergessen den richtigen namen zusetzen:
    statt:

    char *comp(char * comp , DWORD size)
    

    müsste es:

    char *comp(char * name , DWORD size)
    

    sein

    MfG



  • hab die funktion jetz einfach weggelassen

    char name[512] = {0};
      DWORD len = sizeof(name);
      GetComputerName(name,&len);
      AnsiString tmp = "\\\\Server-2\\Suche\\";
      tmp += name,len;
      tmp += AnsiString(".txt");
      Panel1->Caption=tmp;
      std::ofstream ofs(tmp.c_str());
      suche(Edit1->Text, ofs);
    

    so funktionierts 😉
    thx



  • oh mann da hätt ich auch von allein drauf kommen sollen.. 😛
    naja wegen den 2 zeilen hab ich jetzt die funktion einfach weggelassen..

    geht so auch..

    also danke bis denn



  • tmp += name,len;  <---------    :open_mouth:   :warning:  Fehler len gehört da nicht hin und das Komma schon gar net
    


  • ok thx,

    so jetz geht alles,

    hier der quellcode falls jemand mal das selbe problem haben sollte 😉

    mit dem Programm wird der eingegebene Pfad durchsucht und jede Datei in eine .txt Datei gespeichert die den Namen des jeweiligen Rechners trägt.

    void such(AnsiString pfad, std::ofstream & ofs )
    {
    Form2->Caption=pfad;
    TSearchRec sr;
    pfad += "\\";
    if (FindFirst(pfad + "*", faAnyFile, sr) == 0)//fAnyFile:jede Datei wird gesucht
      {
        do
          {     
          if ((sr.Name != ".")&&(sr.Name != "..")) //. und .. werden nicht berücksichtigt (sonst habt ihr in euren .txt dateien jede menge . bzw. ..)
          {
           if (sr.Attr == faDirectory) //wenn das Attr. ein Ordner ist
          {
           suche(pfad+sr.Name, ofs); //wird dieser ordner wieder nach dateien durchsucht
          }
           else
          {
           ofs << ( pfad + sr.Name ).c_str() << std::endl; //wenn nicht ist es eine datei und wird in die .txt datei geschrieben
          }
         }
        } 
        while (FindNext(sr) == 0);
        FindClose(sr);
      }
    }
    //------------------------------------------------------------
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
      char name[512] = {0};
      D WORD len = sizeof(name);
      GetComputerName(name,&len);
      AnsiString tmp = "\\\\Server-2\\Suche\\";
      tmp += name;
      tmp += AnsiString(".txt");
      Panel1->Caption=tmp;
      std::ofstream ofs(tmp.c_str());
      such(Edit1->Text, ofs);
    }
    

    vielleicht kann das ja mal jemand gebrauchen..

    danke nochma..


Anmelden zum Antworten