View Issue Details

IDProjectCategoryView StatusLast Update
0006312JEDI VCL00 JVCL Componentspublic2015-09-21 20:28
ReporteraltaveronAssigned ToAHUser 
PrioritynormalSeverityblockReproducibilityalways
Status resolvedResolutionfixed 
Product Version3.47 
Target VersionFixed in VersionDaily / GIT 
Summary0006312: The correct support for x64 platform
DescriptionPlease 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));
TagsNo tags attached.

Activities

altaveron

2014-07-31 21:48

reporter   ~0021011

Module JvRichEdit.pas has class TOleUILinkInfo that doesn't support x64 platform at all.

obones

2014-08-31 22:37

administrator   ~0021017

Could you please create pull requests at github for all these changes?

altaveron

2014-09-01 13:10

reporter   ~0021020

I never did pull request. Please make all required changes without pull request if it's possible.

obones

2014-09-01 15:31

administrator   ~0021021

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.

AHUser

2015-09-21 20:28

developer   ~0021214

Win64 correctness applied to git master.

Issue History

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