![]() |
Re: [C++] Username auslesen
Dass du irgendwas falsch machst. Und es nicht an deinem Computer, sondern an deinem Code liegt. Leider kenne ich mich mit C++ auch nicht so gut aus. Vergleich einfach mal.
|
Re: [C++] Username auslesen
Ohne TypeCasting ist bei mir alles OK.
Code:
#include <iostream>
#include <windows.h> #define INFO_BUFFER_SIZE 32767 struct dataBuf { TCHAR ComputerName[INFO_BUFFER_SIZE]; TCHAR UserName[INFO_BUFFER_SIZE]; TCHAR SysDir[INFO_BUFFER_SIZE]; TCHAR WinDir[INFO_BUFFER_SIZE]; }; dataBuf pData; DWORD countChar = INFO_BUFFER_SIZE; using namespace std; int main() { if( !GetUserName(pData.UserName, &countChar) ) { cout << GetLastError() << endl; } cout << "user name: " << pData.UserName << endl; return 0; } |
Re: [C++] Username auslesen
Also ohne Typecast gehts mir genauso wenig :/
@Luckie Naja, ich habs ja testweise anders gemacht. Und da gings genauso wenig :gruebel: |
Re: [C++] Username auslesen
Zitat:
Der Typ TCHAR ist laut MSDN auf einem Unicode-System als WCHAR definiert. std::string gips aber nicht für wchars, sondern nur für (ANSI-)chars. Mein Compiler wirft mir wenigstens einen Fehler um die Ohren, wenn ich ein wchar_t-Array als Parameter an den std::string()-ctor übergebe. Probier's also mal entweder mit einem Container, der Strings unterstützt (in GNUs libstdc++ zum Bleistift std::wstring, oder std::basic_string<wchar_t> und eine passende Spezialisierung selber implementieren) oder mit einem single-byte Typ, also einfach char[] statt TCHAR[]. Systemabhängige Typen zu verwenden ohne die Funktionen anzupassen ist sowieso eine gefährliche Sache. Wenn du wirklich einen String aus wchars haben willst, solltest du auch GetUserNameW() verwenden. Ich kann zwar nicht ausprobieren, ob das ganze mit GetUserName() funktioniert, aber zumindest das erzeugen eines std::strings aus einem char[] funktioniert bei mir (GCC 4.0.2) wunderbar:
Code:
kompiliert mit gcc -Wall ohne Warnungen und arbeitet wie erwartet.
#include <iostream>
#include <string> int main(int argc, char* argv[]) { char pdata[42]; strcpy(pdata, "blubb"); std::cout << std::string(pdata) << std::endl; return 0; } |
Re: [C++] Username auslesen
Aaaah, ich habs endlich raus ;)
Ganz simpel: countChar wurde einfach zuviel genommen beim Abrufen des Computernamens (wahrsch. alles). Dadurch wurde das zu klein. Simples Neu-Definieren von "countChar = INFO_BUFFER_SIZE;" vor dem Aufruf von GetUserName hat bereits gereicht ;) Danke trotzdem an Alle :) air |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz