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 conversionnaja 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..