AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[C++] Username auslesen

Ein Thema von Airblader · begonnen am 13. Feb 2006 · letzter Beitrag vom 14. Feb 2006
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: [C++] Username auslesen

  Alt 14. Feb 2006, 16:26
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#12

Re: [C++] Username auslesen

  Alt 14. Feb 2006, 17:00
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;
}
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#13

Re: [C++] Username auslesen

  Alt 14. Feb 2006, 18:14
Also ohne Typecast gehts mir genauso wenig :/

@Luckie
Naja, ich habs ja testweise anders gemacht. Und da gings genauso wenig
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#14

Re: [C++] Username auslesen

  Alt 14. Feb 2006, 18:49
Zitat von sniper_w:
Ohne TypeCasting ist bei mir alles OK.
Wo ist ein Typecast? Du meinst wohl Erzeugen eines std::string.

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:
#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;
}
kompiliert mit gcc -Wall ohne Warnungen und arbeitet wie erwartet.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#15

Re: [C++] Username auslesen

  Alt 14. Feb 2006, 23:09
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
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz