Avatar billede erve Nybegynder
28. februar 2001 - 14:26 Der er 4 kommentarer og
2 løsninger

Windows handle\'s

Jeg har et problem med et program der er lagt om fra D2 til D4.
Jeg får Range Check error når jeg forsøger at asigne en windows handle til en integer under Windows NT. I nogle situationer kan windowhandle antage værdier op til 4GB f.eks 3.599.630.986.
Nogen der kan forklare det?
Avatar billede pellelil Nybegynder
28. februar 2001 - 14:28 #1
Ja, en Integer kan kun klare værdier op til 2^32-1
Avatar billede pellelil Nybegynder
28. februar 2001 - 14:29 #2
Øhh jeg mener 2^31-1
Avatar billede erve Nybegynder
28. februar 2001 - 14:38 #3
Jamen problemet eksisterer tilsnyeladende ikke under D2, og en kollega hævder at pointere godt kan have \"negative\" værdier, som det jo vil være hvis den går over MAXINT. Eller skal vi så til at typecaste til unsigned alle steder, hvor en windows handle assignes til en integer?
Avatar billede martinlind Nybegynder
28. februar 2001 - 14:39 #4
Prøv at lav din Integer om til typen THandle eller lav den om til LongInt, dette skulle løse dit problem.

THandle : LongWord;
og en LongWord er IKKE det samme som en Integer;


/Martin

Avatar billede pellelil Nybegynder
28. februar 2001 - 14:42 #5
En pointer kan ikke være negativ, for hvor ligger adresse -7 ?. Men hvis du læser en pointe som en Integer værdi så \"ser den ud til\" at være negative lige så snart MSB er sat. I stedet for LongInt så brug Pointer, LongWord eller DWORD disse er alle 32 bit unsigned
Avatar billede martinlind Nybegynder
28. februar 2001 - 14:43 #6
og din kollega har faktisk ret en longword er en unsigned 32bit hvorimod en integer er en signed 32 bit. Og lige til slut Online hjælpen er fejl behæftet der står en THandle til at være en Integer, men i sourcen er det en LongWord

/Martin
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