Fehler beim Kompilieren
-
Mal ne Frage:
Bin neu auf dem Gebiet C++
Hab ne MFC(Dialogbasierend) mit 2 Editfeldern,1Button
-------------------
IDC_NAME
IDC_SERIAL
ID_Generate
-------------------
Wenn ich das jetzt kompilieren will:
----------------------------------------------------------------
void CPasswordDlg::OnGenerate()
;UINT GetDlgItemText(HWND hDlg, // handle of dialog box
int nIDDlgItem, // identifier of control
LPTSTR lpString, // address of buffer for text
int nMaxCount // maximum size of string
);int ;Password(HWND hwnd)
{char name[26] = "";
char result[9] = "";
int i, j, len;
unsigned long serial1 = 0, serial2 = 0;
unsigned long temp = 0, arg = 0, shit = 0, ctrl = 0;GetDlgItemText(hwnd, IDC_NAME, name, 26);
len = strlen(name);while(name[len-1] == ' ') len--;
name[len] = 0x00;
while(name[0] == ' ') for(i = 0; i < len; ++i) name[i] = name[i+1];
len = strlen(name);
if(len == 0)
{
SetDlgItemText(hwnd, IDC_SERIAL, "Please enter your name!");
return 1;
}
else if(len > 25)
{
SetDlgItemText(hwnd, IDC_SERIAL, "Name has to be less than 26 chars.");
return 1;
}for(i = 0; i < len; ++i) serial1 += name[i] * i;
for(i = 0; i < len; ++i)
{
arg = name[i] << 8;for(j = 0; j < 8; ++j)
{
temp = serial2;
temp ^= arg;
ctrl = temp & 0x8000;
if(ctrl == 0)
{
serial2 <<= 1;
arg <<= 1;
}
else
{
serial2 += serial2;
serial2 ^= 0x1000;
arg <<= 1;
}
}
}serial2 += 0x50;
serial2 %= 0x10000;wsprintf(result, "%.4X%.4X", serial2, serial1);
SetDlgItemText(hwnd, IDC_SERIAL, result);return 0;
}
// kommt folgende Fehlermeldung:
--------------------Konfiguration: Password - Win32 Debug--------------------
Kompilierung läuft...
PasswordDlg.cpp
C:\c++test2\New\Password\PasswordDlg.cpp(183) : error C2373: 'GetDlgItemTextA' : Neudefinition; unterschiedliche Modifizierer
c:\programme\microsoft visual studio\vc98\include\winuser.h(3515) : Siehe Deklaration von 'GetDlgItemTextA'
C:\c++test2\New\Password\PasswordDlg.cpp(185) : warning C4091: '' : Ignoriert auf der linken Seite von 'int', wenn keine Variable deklariert wurde
Fehler beim Ausführen von cl.exe.Password.exe - 1 Fehler, 1 Warnung(en)
--------------------------------------------------------------------------------
Wo liegen die Fehler und muß man nicht erst wie in VB die Editfelder deklarieren wie:
Dim Text1.Text As String
Dim Text2.Text As ........???
Wäre über Anregungen und Fehlerbehandlungen Eurerseits begeistert!!!
mfg
Pavel C.
-
Keiner eine Idee?
mfg
Pavel
-
mach mal das semikolon in int ;Password(HWND hwnd) raus.
und welchen sinn hat
UINT GetDlgItemText( HWND hDlg, // handle of dialog box int nIDDlgItem, // identifier of control LPTSTR lpString, // address of buffer for text int nMaxCount // maximum size of string );? steht sowas nicht berits in der <windows.h>? ich denke, das stück sollt ersatzlos gestrichen werden.
-
Hi
void CPasswordDlg::OnGenerate();Dieser Code macht so wenig Sinn.

UINT GetDlgItemText( HWND hDlg, // handle of dialog box int nIDDlgItem, // identifier of control LPTSTR lpString, // address of buffer for text int nMaxCount // maximum size of string );Dieser Code auch (Die Funktion ist schon durch windows.h bzw afxwin.h deklariert, deshalb die Fehlermeldung.)
Dann ist dir noch ein ; bei int; Password reingerutscht.
int;ist zwar prinzipiell richtig, ist aber überflüssig

Versuchs dann nochmal.
Grüße Rapha
<edit>Oh, da hat noch jemand geantwortet
</edit>
-
Danke für die Antworten
-----------------------------------
void CPasswordDlg::OnGenerate();
Dieser Code macht so wenig Sinn
-----------------------------------
Wie würde es denn aussehen wenn es Sinn macht?
Stimmt was mit dem "void" nicht?
Oder was kommt rein beim Button-Klickmfg
Pavel
-
Hi
mit wenig Sinn meine ich, dass du die Methode CPasswordDlg::OnGenerate() definieren musst nicht nocheinmal deklarieren:
void CPasswordDlg::OnGenerate() { MessageBox("Es wurde auf den Generierenbutton geklickt"); }Grüße Rapha
-
Hi
mit wenig Sinn meine ich, dass du die Methode CPasswordDlg::OnGenerate() definieren musst nicht nocheinmal deklarieren:
void CPasswordDlg::OnGenerate() { MessageBox("Es wurde auf den Generierenbutton geklickt"); }Grüße Rapha
-
Tja ich werd nicht schlau draus

Und Wie definiere ich das nun???mfg
Pavel
-

Soetwas habe ich gemeint:
void CPasswordDlg::OnGenerate() { MessageBox("Es wurde auf den Generierenbutton geklickt"); }Beispiel:
Das ist eine Deklaration der Funktion test:void test(char* pszTest);Das ist eine Definition:
void test(char* pszTest) { AfxMessageBox(pszTest); // oder was anderes }Wenn du eine Funktion nur deklarierst und nicht definierst, bekommst du einen Compilerfehler, wenn du die Funktion aufrufen willst (ist ja logisch).
Das habe ich gemeint

Grüße Rapha