Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 19:56

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



void (__cdecl *)(int)' in 'DWORD

Discussion on void (__cdecl *)(int)' in 'DWORD within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jan 2011
Posts: 345
Received Thanks: 84
void (__cdecl *)(int)' in 'DWORD

Hey e*pvpers,

Ich habe gerade mit C++ angefangen. Nun wollte ich einen Timer machen, in den man die Zeit eingibt und der dann diese Zeit abwartet(Sleep) und danach den Warnton(\a) ausgibt.

Dies hier ist mein Code:

Dies hier ist der Fehlercode

Bin natürlich auch für Anregungen am Code selber offen.




mfg
xazorstix
xazorstix is offline  
Old 02/28/2012, 22:04   #2
 
elite*gold: 115
Join Date: Oct 2007
Posts: 9,390
Received Thanks: 12,344
Du gibst immer den Funktionsnamen anstatt des Variablennamens als Argument an die Sleep-Funktion. Außerdem solltest du wo es möglich ist nur lokale Variablen benutzen, da globale Variablen böse sind.
ms​ is offline  
Thanks
1 User
Old 02/29/2012, 12:21   #3
 
elite*gold: 0
Join Date: Nov 2009
Posts: 343
Received Thanks: 45
VBA vorbelastet.
Code:
void sectim( int n )
{
	Sleep( n * 1000 );
}
MfG
yihaaa is offline  
Thanks
1 User
Old 02/29/2012, 13:17   #4
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Das Problem ist ganz einfach, dass du nicht den Namen der Variablen an Sleep übergist, sondern die Funktionen. Und deine Funktionen sind in dem Fall nunmal vom typen void (__cdecl*)(int), was der Compiler jedoch nicht implizit nach unsigned long (DWORD) casten kann.

Anregungen:
Globale Variablen vermeiden.
Globales using namespace vermeiden
Gebe deinen Variablen aussagekräftige Namen. n und t sagen dir absolut gar nichts.

Was ich cool finde:
Wie du den String auf mehrere Möglichkeiten mit dem Komma Operator prüfst. Sieht man nicht sehr häufig!
Nightblizard is offline  
Thanks
1 User
Old 02/29/2012, 15:45   #5
 
elite*gold: 115
Join Date: Oct 2007
Posts: 9,390
Received Thanks: 12,344
Quote:
Originally Posted by Nightblizard View Post
Was ich cool finde:
Wie du den String auf mehrere Möglichkeiten mit dem Komma Operator prüfst. Sieht man nicht sehr häufig!
Ist...
Code:
if(t == "sec", "seconds")
... nicht gleichwertig mit ...?
Code:
if("seconds")
Ich dachte immer der Komma-Operator evaluiert zu dem letzten Ausdruck und verwirft den Rest.
ms​ is offline  
Thanks
1 User
Old 02/29/2012, 15:54   #6
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Quote:
Originally Posted by Metin2Spieler97 View Post
Ist...
Code:
if(t == "sec", "seconds")
... nicht gleichwertig mit ...?
Code:
if(t == "seconds")
Ich dachte immer der Komma-Operator evaluiert zu dem letzten Ausdruck und verwirft den Rest.
Wir haben beide unrecht.
Der Code macht folgendes:
Code:
mov ecx, offset string "seconds"
test ecx,ecx
je DEADBEEFh ;überspringt den if block
Der if-Block wird also immer aufgerufen!


Edit:
Ah, du hast es geändert.
Nightblizard is offline  
Old 02/29/2012, 16:11   #7
 
elite*gold: 115
Join Date: Oct 2007
Posts: 9,390
Received Thanks: 12,344
Quote:
Originally Posted by Nightblizard View Post
Edit:
Ah, du hast es geändert.
Mir ist im Nachhinein erst aufgefallen, dass der == Operator vor dem Komma kommt. :>
ms​ is offline  
Old 02/29/2012, 17:24   #8
 
elite*gold: 0
Join Date: Jan 2011
Posts: 345
Received Thanks: 84
DANKE für eure Hilfe, ich habe die Funktion in Sleep durch die Variablen ersetzt.
Dazu habe ich noch einen Warnton eingebaut, welcher ertönt wenn Sleep(time) vorüber ist.

Habe auch eure anderen Verbesserungen mit eingebracht.

xazorstix is offline  
Old 02/29/2012, 17:58   #9
 
elite*gold: 5
Join Date: Sep 2006
Posts: 385
Received Thanks: 218
Du kannst die Eingabe so nicht prüfen. Der Compiler macht aus diesem Code
Code:
if(timetype == "sec", "seconds")
folgendes:
Code:
timetype == sec;
if("seconds") //prüft, ob der angegebene String ungleich null ist und das ist er, weshalb dieser Teil immer aufgerufen wird
Du kannst also so nicht prüfen, da egal ist was du eingibst, es wird immer ausgeführt!
Wie es du machen solltest:
Code:
if(tyetype == "sec" || timetype == "seconds")
Nightblizard is offline  
Thanks
1 User
Old 02/29/2012, 18:14   #10
 
elite*gold: 0
Join Date: Jan 2011
Posts: 345
Received Thanks: 84
Wär ja auch zu schön gewesen

xazorstix is offline  
Old 03/01/2012, 23:51   #11


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
Es ist auch nicht gerade schlau, die Namen der Funktionen den Namen der Variablen so ähnlich zu wählen (sectime, sectim).
MrSm!th is offline  
Reply

Tags
dword, konvertierung


Similar Threads Similar Threads
[Frage] DWORD zu CString
10/15/2011 - Flyff Private Server - 3 Replies
Hey, hab da mal eine Frage undzwar würde ich gerne eine DWORD Variable (m_pFocusItem->dwLevel) in einen CString konvertieren, habe auch schon gegoogelt, verstehe das mit sprintf() allerdings nicht so richtig >.< MFG Yakuzai.
Type convertierung / Funktionspointer to DWORD (Functionsaddr)
06/28/2011 - General Coding - 3 Replies
Hey liebe Coder, Ich habe ein kleines Umsetzungsproblem in einem meiner Programme. Ich versuche die Addr einer Funktion in DWORD zu speichern. class Beispiel { public: void Funktion();
*(Hot*)(DWORD WhcLabs)(D3D,PlantAnyWhere,SNS,Teleport).......... ......
06/25/2011 - WarRock Hacks, Bots, Cheats & Exploits - 15 Replies
Status : Undetected Version : 1.1 Screen: http://img232.imageshack.us/img232/2425/whcl.png Uploaded with ImageShack.us Virustotal
word,dword,float...
05/04/2009 - Private Server - 0 Replies
Hi I wanted to ask what is the lenght in bytes of: word,dword,qword,float,string,ustring?



All times are GMT +2. The time now is 19:56.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.