Avatar billede mickni33 Nybegynder
31. oktober 2007 - 13:30 Der er 15 kommentarer og
2 løsninger

hvad betyder denne syntax?

hvad betyder dette der står i if |=

        DWORD dwFlags=0;
   
        if(bMultiThreadedNotifications)
      dwFlags|=MAPI_MULTITHREAD_NOTIFICATIONS;
Avatar billede nielle Nybegynder
31. oktober 2007 - 13:46 #1
Det er shorthand for den lidt længere:

dwFlags = dwFlags | MAPI_MULTITHREAD_NOTIFICATIONS;

alstå bitvis-or.
Avatar billede jpk Nybegynder
31. oktober 2007 - 13:46 #2
Det er bitwise OR assignment.
dwFlags får sat den bit der svarer til MAPI_MULTITHREAD_NOTIFICATIONS.
Avatar billede nielle Nybegynder
31. oktober 2007 - 13:47 #3
Notationen "|=" er simpelthen den samme som for "+=", "*=" osv.
Avatar billede mickni33 Nybegynder
31. oktober 2007 - 13:53 #4
det vil sige hvis dwflag = 0

og MAPI_MULTITHREAD_NOTIFICATIONS = true

så giver dwflag:
0 or true

som giver 1
Avatar billede arne_v Ekspert
31. oktober 2007 - 13:58 #5
ikke boolsk or men bitwise or

b01001001 | b00000010 giver b01001011
Avatar billede mickni33 Nybegynder
31. oktober 2007 - 13:59 #6
aaaaahhhh ok
Avatar billede mickni33 Nybegynder
31. oktober 2007 - 14:25 #7
Der står i min debug at  dwFlag = A regner med at det er hex fordi
dwFlags|=MAPI_NT_SERVICE;  hvor at define MAPI_NT_SERVICE = 0x00010000

hvad betyder det når det står i en if som true eller false
hvordan kan dwFlag = 0x00010000

if(dwFlags) {
    MAPIINIT_0 MAPIInit={ MAPI_INIT_VERSION, dwFlags };
       
    if(MAPIInitialize(&MAPIInit)!=S_OK) {
      return FALSE;
    }
}
  else {
    if(MAPIInitialize(NULL)!=S_OK) return FALSE;
  }

return TRUE;
}
Avatar billede mickni33 Nybegynder
31. oktober 2007 - 14:25 #8
aaaarrgggg manglede noget

hvad betyder det når det står i en if som true eller false
hvordan kan dwFlag = 0x00010000 være true eller false
Avatar billede jpk Nybegynder
31. oktober 2007 - 14:30 #9
0 er false, alt andet er true...
Avatar billede mickni33 Nybegynder
31. oktober 2007 - 14:32 #10
aaahhh ja det er rigtig, man har jo helt glemt sit C/C++ her i disse Java/C# tider
:-)
Avatar billede mickni33 Nybegynder
31. oktober 2007 - 14:46 #11
læg lige nogle svar
Avatar billede nielle Nybegynder
31. oktober 2007 - 15:54 #12
Svar :^)
Avatar billede mickni33 Nybegynder
31. oktober 2007 - 16:01 #13
hmmmm er dette ikke misvisende o = ok  1=fals
#define S_OK                                  ((HRESULT)0x00000000L)
#define S_FALSE                                ((HRESULT)0x00000001L)
Avatar billede arne_v Ekspert
31. oktober 2007 - 16:13 #14
Man bruger ofte en konvention:

if(funk(bla,bla))
{
...
}

i betydningen:

if(fejlifunk(bla,bla))
{
...
}

d.v.s. at den returnerer sand eller falsk til om der er fejl.

Og saa bliver falsk til OK !
Avatar billede mickni33 Nybegynder
31. oktober 2007 - 16:16 #15
nååå ok altså om det er true at der er fejl :-)
læg et svar
Avatar billede arne_v Ekspert
31. oktober 2007 - 16:35 #16
svar
Avatar billede nielle Nybegynder
31. oktober 2007 - 17:34 #17
31/10-2007 14:32:45> Sådan virker det nu også i C# og Java :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester