Z Delphi na C++

0

Informacje o użytkowniku
Isteniej funkcja API ...........


Procedure TMainForm.FormCreate(Sender: TObject);
var
Buffer : array[0...255] of char;
wSize : DWORD;

begin
wSize :=255;
GetUserName(Buffer, wSize);
Etykieta.Caption :=Buffer;
end;

C++

void __fastcall TForm1::FormCreate(TObject *Sender)
{
char Buffer[256];
// tu jest problem bo odpowiednikiem DWORD jest Unsigned Short
// ale po wstawieniu np.
unsigned short wSize;
//pobranie  informacji o uzytkowniku
wSize=255; //okreslenie dlugosci lancucha
GetUserName(Buffer,wSize);   
Label10->Caption=Buffer;

}
/* no i pocałuj go w nos
Build
  [C++ Error] Unit1.cpp(43): E2034 Cannot convert 'int' to 'unsigned long *'
  [C++ Error] Unit1.cpp(43): E2342 Type mismatch in parameter 'nSize' (wanted 'unsigned long *', got 'unsigned short')
  [C++ Warning] Unit1.cpp(45): W8004 'rozmiar' is assigned a value that is never used
*/

//---------------------------------------------------------------------------
 

a jak tak zrobie to prawie dobrze poza tym ze zamiast nazwy użytkownika dostaje smieci

void __fastcall TForm1::FormCreate(TObject *Sender)
{
char Buffer[256];
unsigned long tab[255]; 
GetUserName(Buffer,tab);
Label10->Caption=Buffer;

}

ma ktoś pomysł jak zrobić by było ok ?

0

BOOL GetUserName(

LPTSTR lpBuffer,	// address of name buffer 
LPDWORD nSize 	// address of size of name buffer 

);

Więc jako parametry musisz podać adresy zmiennych - a nie ich wartości tak jak to napisałeś.

Spróbuj tak:

GetUserName(&Buffer, &wSize);

Choć w sumie Buffer to tablica, więs powinno styknąć takie coś:

GetUserName(Buffer, &wSize);
0

GetUserName(Buffer, wSize);

wSize określa długość łańcucha

dlaczego kompilatro nie chce łyknąć tego ze np.

int wSize=255;

tylko mi wywala błąd, że nie może konwertować typu int na unsigned long

a żeby było śmieszniej to ungigned long na unsigned long też nie chce

0

char cUser[256]; //tutaj zostanie umieszczona nazwa użytkownika
unsigned long l = 256; // rozmiar cUser
GetUserName(cUser, &l); // pobranie nazwy użytkownika i mieszczenie jej w cUser
CString str = cUser; // dla wyświetlenia
MessageBox(str);

I tyle :) sprawa zamkieta

// dodam tyle, że DWORD, to bynajmniej nie unsigned short, tylko DWORD/unsigned long [mf]

1 użytkowników online, w tym zalogowanych: 0, gości: 1