I recently reviewed all my projects to be ready to x64 (replaced things like 
Integer(Pointer) ) and also checked code of some components I use.
The main idea is not to cast pointers/handles to integer/cardinal as they may 
exceed 4 bytes on x64 systems. Emb-ro introduced two new types: Native(U)Int 
that will always have the same size as Handle/Pointer. So I believe the changes 
could be done right now.
Here's what I found in ICS.


1) if Integer(FHandle) >= 0 then // NativeInt() but not necessary as it's for 
old compilers

2) TIcsIntegerList.Get***, all Integer() casts

3) Cardinal(Pointer(Result)^) := Len;

4) if Cardinal(FHandle) = INVALID_HANDLE_VALUE then // (twice) to NativeUInt


1) KillTimer(FIcsWndControl.Handle, Cardinal(Integer(IntPtr(FHandleGC))));
2)        if SetTimer(FIcsWndControl.Handle,
                    Cardinal(Integer(IntPtr(FHandleGC))), FInterval, nil) = 0 
then begin
3) KillTimer(FIcsWndControl.Handle, Cardinal(Self));
4)        if SetTimer(FIcsWndControl.Handle,
                    Cardinal(Self), FInterval, nil) = 0 then begin

There are other some Integer() stuff but inside IFDEF CLR sections and I have 
no idea on what things in x64 .Net are (and even if they differ from x32 at 

To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to