View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0006312 | JEDI VCL | 00 JVCL Components | public | 2014-07-31 21:46 | 2015-09-21 20:28 |
Reporter | altaveron | Assigned To | AHUser | ||
Priority | normal | Severity | block | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | 3.47 | ||||
Target Version | Fixed in Version | Daily / GIT | |||
Summary | 0006312: The correct support for x64 platform | ||||
Description | Please add the correct support for x64 platform. I can provide you required changes. The first block on each source file is a set of original lines. The second block is a set of correct lines. Official documentation can be found here: docwiki.embarcadero.com/RADStudio/XE4/en/Converting_32-bit_Delphi_Applications_to_64-bit_Windows | ||||
Additional Information | *** JCL *** 1. JediGUIInstall.pas SetWindowLong(FFormCompile.Handle, GWL_HWNDPARENT, Handle); SetWindowLongPtr(FFormCompile.Handle, GWLP_HWNDPARENT, Handle); 2.JclSysInfo.pas ExStyle := GetWindowLongPtr(Wnd, GWL_EXSTYLE); ExStyle := GetWindowLong(Wnd, GWL_EXSTYLE); 3. JclOpenDialogHooks.pas SetString(Result, Path, SendMessage(FParentWnd, CDM_GETFOLDERPATH, SizeOf(Path), Integer(@Path))); SetString(Result, Path, SendMessage(FParentWnd, CDM_GETFOLDERPATH, SizeOf(Path), LPARAM(@Path))); *** JVCL *** 1. JvVCLUtils.pas Result := GetWindowLong(Wnd, GWL_HWNDPARENT); Result := GetWindowLongPtr(Wnd, GWLP_HWNDPARENT); 2. AHCompBrowseFolderDlg.pas TBrowseFolderDialog(Data).FDefWndProc := Pointer(SetWindowLong(wnd, GWL_WNDPROC, TBrowseFolderDialog(Data).FDefWndProc := Pointer(SetWindowLongPtr(wnd, GWLP_WNDPROC, 3. JvAVICapture.pas SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWL_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWL_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWL_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWL_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWL_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWL_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWL_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWL_USERDATA)); SetWindowLongPtr(FHWnd, GWL_USERDATA, LONG_PTR(Self)); FPreviousWndProc := Pointer(GetWindowLongPtr(FHWnd, GWL_WNDPROC)); SetWindowLongPtr(FHWnd, GWL_WNDPROC, LONG_PTR(@CustomWndProc)); SetWindowLongPtr(FHWnd, GWL_WNDPROC, LONG_PTR(FPreviousWndProc)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWLP_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWLP_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWLP_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWLP_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWLP_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWLP_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWLP_USERDATA)); SelfObj := TJvAVICapture(GetWindowLongPtr(hWnd, GWLP_USERDATA)); SetWindowLongPtr(FHWnd, GWLP_USERDATA, LONG_PTR(Self)); FPreviousWndProc := Pointer(GetWindowLongPtr(FHWnd, GWLP_WNDPROC)); SetWindowLongPtr(FHWnd, GWLP_WNDPROC, LONG_PTR(@CustomWndProc)); SetWindowLongPtr(FHWnd, GWLP_WNDPROC, LONG_PTR(FPreviousWndProc)); 4. JvBDEFilter.pas Longint(Self), FPriority, False, Check(DbiAddFilter((FDataLink.DataSet as TBDEDataSet).Handle, Longint(Self), NativeInt(Self), FPriority, False, Check(DbiAddFilter((FDataLink.DataSet as TBDEDataSet).Handle, NativeInt(Self), 5. JvBDEProgress.pas Check(DbiRegisterCallback(nil, FCBType, Longint(Self), FCBBufLen, Check(DbiRegisterCallback(nil, FCBType, NativeInt(Self), FCBBufLen, 6. JvBackgrounds.pas FPrevWndProc := Pointer(SetWindowLongPtr(ClientHandle, GWL_WNDPROC, LONG_PTR(FNewWndProc))); if (FNewWndProc <> Pointer(SetWindowLongPtr(ClientHandle, GWL_WNDPROC, LONG_PTR(FPrevWndProc)))) and FPrevWndProc := Pointer(SetWindowLongPtr(ClientHandle, GWLP_WNDPROC, LONG_PTR(FNewWndProc))); if (FNewWndProc <> Pointer(SetWindowLongPtr(ClientHandle, GWLP_WNDPROC, LONG_PTR(FPrevWndProc)))) and 7. JvBaseDBDialog.pas SetWindowLongPtr(Result.Handle, GWL_HWNDPARENT, LONG_PTR(FParentWnd)); SetWindowLongPtr(Result.Handle, GWLP_HWNDPARENT, LONG_PTR(FParentWnd)); 8. JvBrowseFolder.pas FDefWndProc := Pointer(SetWindowLongPtr(FDialogWindow, GWL_WNDPROC, LONG_PTR(FObjectInstance))); FDefWndProc := Pointer(SetWindowLongPtr(FDialogWindow, GWLP_WNDPROC, LONG_PTR(FObjectInstance))); 9. JvColorCombo.pas Result := Integer(Item1) - Integer(Item2); Result := Integer(NativeInt(Item1) - NativeInt(Item2)) 10. JvComCtrls.pas SetWindowLongPtr(FHandle, GWL_WNDPROC, LONG_PTR(FOrgWndProc)); FOrgWndProc := Pointer(SetWindowLongPtr(FHandle, GWL_WNDPROC, LONG_PTR(FInstance))); SetWindowLongPtr(FHandle, GWLP_WNDPROC, LONG_PTR(FOrgWndProc)); FOrgWndProc := Pointer(SetWindowLongPtr(FHandle, GWLP_WNDPROC, LONG_PTR(FInstance))); 11. JvComponent.pas if HWND(GetWindowLong(Handle, GWL_HWNDPARENT)) <> NewParent then SetWindowLong(Handle, GWL_HWNDPARENT, Longint(NewParent)); if HWND(GetWindowLong(Handle, GWL_HWNDPARENT)) <> NewParent then SetWindowLong(Handle, GWL_HWNDPARENT, Longint(NewParent)); if HWND(GetWindowLongPtr(Handle, GWLP_HWNDPARENT)) <> NewParent then SetWindowLongPtr(Handle, GWLP_HWNDPARENT, LONG_PTR(NewParent)); if HWND(GetWindowLongPtr(Handle, GWLP_HWNDPARENT)) <> NewParent then SetWindowLongPtr(Handle, GWLP_HWNDPARENT, LONG_PTR(NewParent)); 12. JvCreateProcess.pas Result := THandle(GetWindowLongPtr(AHandle, GWL_HINSTANCE)) = WinSrvHandle; Result := THandle(GetWindowLongPtr(AHandle, GWLP_HINSTANCE)) = WinSrvHandle; 13. JvDialogs.pas FOldParentWndInstance := Pointer(SetWindowLongPtr(FParentWnd, GWL_WNDPROC, LONG_PTR(FParentWndInstance))); FOldParentWndInstance := Pointer(SetWindowLongPtr(FParentWnd, GWLP_WNDPROC, LONG_PTR(FParentWndInstance))); 14. JvGnugettext.pas offset:=integer(NewProc)-integer(pointer(patchPosition))-5; p:=pointer((integer(p) + PAGESIZE-1) and not (PAGESIZE-1) - pageSize); offset:=Integer(NativeInt(NewProc)-NativeInt(pointer(patchPosition))-5); p:=pointer((NativeInt(p) + PAGESIZE-1) and not (PAGESIZE-1) - pageSize); 15. JvID3v2Base.pas FController.ID3Event(ideFrameChange, Longint(Self)); FController.ID3Event(ideFrameChange, NativeInt(Self)); 16. JvJCLUtils.pas Result := THandle(GetWindowLongPtr(Wnd, GWL_HWNDPARENT)); Result := THandle(GetWindowLongPtr(Wnd, GWLP_HWNDPARENT)); 17. JvJVCLUtils.pas SetWindowLongPtr(Result, GWL_WNDPROC, LONG_PTR(@StdWndProc)); SetWindowLongPtr(Result, GWLP_WNDPROC, LONG_PTR(@StdWndProc)); 18. JvMenus.pas DefProc := Pointer(GetWindowLongPtr(CanvasWindow, GWL_WNDPROC)); SetWindowLongPtr(AHandle, GWL_WNDPROC, LONG_PTR(NewProc)); SetWindowLongPtr(AHandle, GWL_WNDPROC, LONG_PTR(FPrevProcList[Index])); DefProc := Pointer(GetWindowLongPtr(CanvasWindow, GWLP_WNDPROC)); SetWindowLongPtr(AHandle, GWLP_WNDPROC, LONG_PTR(NewProc)); SetWindowLongPtr(AHandle, GWLP_WNDPROC, LONG_PTR(FPrevProcList[Index])); 19. JvPageSetup.pas Pointer(SetWindowLongPtr(Wnd, GWL_WNDPROC, LONG_PTR(THackCommonDialog(CreationControl).FObjectInstance))); Pointer(SetWindowLongPtr(Wnd, GWLP_WNDPROC, LONG_PTR(THackCommonDialog(CreationControl).FObjectInstance))); 20. JvPageSetupTitled.pas Application.HelpCommand(HELP_SETPOPUP_POS, Longint(Pt)); Application.HelpCommand(HELP_SETPOPUP_POS, Integer(Pt)); 21. JvPlaylist.pas Items.Delete(Longint(Msg.WParam)); Items.Delete(NativeInt(Msg.WParam)); 22. JvRichEdit.pas // ????????? x64: ????? ??????????? ? ?????????? x64 23. JvTFDays.pas Col, MapCols, ApptVal: Integer; ApptVal := Integer(Appt); Col, MapCols: Integer; ApptVal: NativeInt; ApptVal := NativeInt(Appt); 24. JvWndProcHook.pas FOldWndProcHandle := TFarProc(SetWindowLongPtr(FHandle, GWL_WNDPROC, LONG_PTR(MakeObjectInstance(WindowProc)))); Ptr := TFarProc(SetWindowLongPtr(FHandle, GWL_WNDPROC, LONG_PTR(FOldWndProcHandle))); FOldWndProcHandle := TFarProc(SetWindowLongPtr(FHandle, GWLP_WNDPROC, LONG_PTR(MakeObjectInstance(WindowProc)))); Ptr := TFarProc(SetWindowLongPtr(FHandle, GWLP_WNDPROC, LONG_PTR(FOldWndProcHandle))); 25. JvgCaption.pas P := Pointer(GetWindowLongPtr(TForm(Owner).Handle, GWL_WNDPROC)); SetWindowLongPtr(TForm(Owner).Handle, GWL_WNDPROC, LONG_PTR(FNewWndProc)); (Pointer(GetWindowLongPtr(TForm(Owner).Handle, GWL_WNDPROC)) = FNewWndProc) then SetWindowLongPtr(TForm(Owner).Handle, GWL_WNDPROC, LONG_PTR(FPrevWndProc)); P := Pointer(GetWindowLongPtr(TForm(Owner).Handle, GWLP_WNDPROC)); SetWindowLongPtr(TForm(Owner).Handle, GWLP_WNDPROC, LONG_PTR(FNewWndProc)); (Pointer(GetWindowLongPtr(TForm(Owner).Handle, GWLP_WNDPROC)) = FNewWndProc) then SetWindowLongPtr(TForm(Owner).Handle, GWLP_WNDPROC, LONG_PTR(FPrevWndProc)); 26. JvgCheckBox.pas P := Pointer(GetWindowLongPtr(FocusControl.Handle, GWL_WNDPROC)); SetWindowLongPtr(FocusControl.Handle, GWL_WNDPROC, LONG_PTR(FNewWndProc)); (Pointer(GetWindowLongPtr(FocusControl.Handle, GWL_WNDPROC)) = FNewWndProc) then SetWindowLongPtr(FocusControl.Handle, GWL_WNDPROC, LONG_PTR(FPrevWndProc)); P := Pointer(GetWindowLongPtr(FocusControl.Handle, GWLP_WNDPROC)); SetWindowLongPtr(FocusControl.Handle, GWLP_WNDPROC, LONG_PTR(FNewWndProc)); (Pointer(GetWindowLongPtr(FocusControl.Handle, GWLP_WNDPROC)) = FNewWndProc) then SetWindowLongPtr(FocusControl.Handle, GWLP_WNDPROC, LONG_PTR(FPrevWndProc)); 27. JvgLabel.pas P := Pointer(GetWindowLongPtr(FocusControl.Handle, GWL_WNDPROC)); SetWindowLongPtr(FocusControl.Handle, GWL_WNDPROC, LONG_PTR(FNewWndProc)); (Pointer(GetWindowLongPtr(FocusControl.Handle, GWL_WNDPROC)) = FNewWndProc) then SetWindowLongPtr(FocusControl.Handle, GWL_WNDPROC, LONG_PTR(FPrevWndProc)); P := Pointer(GetWindowLongPtr(FocusControl.Handle, GWLP_WNDPROC)); SetWindowLongPtr(FocusControl.Handle, GWLP_WNDPROC, LONG_PTR(FNewWndProc)); (Pointer(GetWindowLongPtr(FocusControl.Handle, GWLP_WNDPROC)) = FNewWndProc) then SetWindowLongPtr(FocusControl.Handle, GWLP_WNDPROC, LONG_PTR(FPrevWndProc)); | ||||
Tags | No tags attached. | ||||
|
Module JvRichEdit.pas has class TOleUILinkInfo that doesn't support x64 platform at all. |
|
Could you please create pull requests at github for all these changes? |
|
I never did pull request. Please make all required changes without pull request if it's possible. |
|
I'm sorry, but it's too much hassle for us to go through when you obviously already have made the changes. Patch files would be nice if you can't/don't want to work with git and github. |
|
Win64 correctness applied to git master. |
Date Modified | Username | Field | Change |
---|---|---|---|
2014-07-31 21:46 | altaveron | New Issue | |
2014-07-31 21:48 | altaveron | Note Added: 0021011 | |
2014-08-31 22:37 | obones | Note Added: 0021017 | |
2014-08-31 22:37 | obones | Status | new => feedback |
2014-09-01 13:10 | altaveron | Note Added: 0021020 | |
2014-09-01 15:31 | obones | Note Added: 0021021 | |
2015-09-21 20:28 | AHUser | Note Added: 0021214 | |
2015-09-21 20:28 | AHUser | Status | feedback => resolved |
2015-09-21 20:28 | AHUser | Fixed in Version | => Daily / GIT |
2015-09-21 20:28 | AHUser | Resolution | open => fixed |
2015-09-21 20:28 | AHUser | Assigned To | => AHUser |