포인터 문제로 인해 Delphi 4에서 이전 프로젝트를 컴파일 할 수 없습니다.

서로

나는 델파이에 전혀 경험이없고 델파이 2,3 버전에서 컴파일 할 수있는 아주 오래된 프로젝트가 있지만 델파이 4에서는 작동하지 않습니다. 문제는 최신 버전에서 다르게 작동하는 포인터에 관한 것입니다.

이러한 코드는 " Variable required " 오류를 발생시킵니다 .

pEnabled := @pClrWire_s^.enabled;
pEnabled        := @Enabled;
pNEnabled    := @pName_s^.Enabled;

여기서 pEnabled는 다음과 같습니다.

const
pEnabled : ^boolean   = nil;

pClrWire_s 및 pName_s도 포인터입니다.

pClrWire_s : TpImage;      {pointer to an image of colored wire}
pName_s    : TpNamed;      {pointer to the identifier}

TpImage 및 TpNamed에 대한 설명은 프로젝트의 다른 파일에서 찾을 수 있습니다.

type
  TpImage   = ^TImage;
TpNamed = ^TNamed;
TNamed = class(TLabel)

전체 코드를 심각하게 다시 작성하지 않고도이 문제를 해결할 수 있습니까? 그리고 Delphi 4에서 그러한 문제의 원인은 무엇입니까?

Fpiette

다음은 최신 Delphi로 테스트 한 완전한 솔루션입니다 (초기 Delphi 버전 번호와 비교하면 실제로는 Delphi 버전 26이지만 다른 이야기입니다).

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages,
  System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls;

type
  TpImage = ^TImage;

{$J+}   // enable writable constant
const
  pEnabled : ^boolean   = nil;

var
  pClrWire_s : TpImage;

type
  TForm1 = class(TForm)
  private

  public

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.

Dalija Prasnikar와 Gerry Coll이 각각의 주석에서 말했듯이, 핵심은 할당 가능한 유형 상수를 활성화하는 것입니다. 소스 코드에서 {$ J +}를 사용하거나 Project options / Building / Delphi compiler / Compiling / Syntax options / Asignable typed constant에있는 프로젝트 옵션을 사용하여 수행 할 수 있습니다.

그것이 당신을 위해 작동하는지 알려주십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Facebook SDK로 인해 Gradle 프로젝트를 컴파일 할 수 없습니다.

분류에서Dev

터미널에서 C ++ 프로젝트를 컴파일 할 수 없습니다.

분류에서Dev

Gradle 종속성으로 인해 업그레이드 된 Android Studio로 새 프로젝트를 컴파일 할 수 없습니다.

분류에서Dev

Intellij에서 프로젝트를 이동했는데 이제 컴파일 할 수 없습니다.

분류에서Dev

웹 프로젝트에 파일이 있는지 여부를 확인할 수 없습니다.

분류에서Dev

서버 오류 : 다른 Google 도메인 이메일 ID로 프로젝트를 공유 할 수 없습니다.

분류에서Dev

Firebase In App Messaging 플러그인을 사용할 때 Flutter가 프로젝트를 컴파일 할 수 없습니다.

분류에서Dev

스프링이 아닌 프로젝트에서 aspectJ 인터셉터를 사용할 수 없습니다.

분류에서Dev

qtcreator에서 Qt 프로젝트를 컴파일 할 수 없습니다.

분류에서Dev

Android 프로젝트에서 aar의 전이 종속성을 컴파일 할 수 없습니다.

분류에서Dev

템플릿 메서드가 앞으로 선언 된 클래스에 액세스하면이 포인터없이 만 컴파일 할 수 없습니다.

분류에서Dev

C에서 Null 포인터를 이해할 수 없습니다.

분류에서Dev

asprintf 함수로 인해 프로그램을 컴파일 할 수 없습니다.

분류에서Dev

이중 포인터를 해제 할 수 없습니다.

분류에서Dev

마지막 RocksDB 버전 범프 이후 니어 코어 프로젝트를 컴파일 할 수 없습니다.

분류에서Dev

파티션 문제로 인해 SSD에 Ubuntu를 설치할 수 없습니다.

분류에서Dev

긴 node_module 경로로 인해 Visual Studio 2015에서 프로젝트를로드 할 수 없습니다.

분류에서Dev

빌드 서비스가 adb.exe로 인해 Android 프로젝트 폴더를 삭제할 수 없습니다.

분류에서Dev

Windows 파일 권한 / 소유권으로 인해 컴퓨터간에 동기화 할 수 없습니다.

분류에서Dev

내 구문의 오류로 인해 데이터 파일을 mysql에로드 할 수 없습니다.

분류에서Dev

"가져올 수 없음"오류로 인해 모바일 MonoGame 프로젝트를 빌드 할 수 없습니다.

분류에서Dev

경로 지정 문제로 인해 docfx 프로젝트를 시작할 수 없습니다.

분류에서Dev

MacOSX10.11.sdk에 대한 이상한 오류로 인해 Swift 프로젝트를 전혀 빌드 할 수 없습니다.

분류에서Dev

문서에서 Erlang 포트 드라이버 예제를 컴파일하고 사용할 수 없습니다.

분류에서Dev

Arduino : gcc 컴파일러로 할 수있는 포인터 ac로 공용 구조체를 전달할 수 없습니다.

분류에서Dev

파티션 문제로 인해 HDD에 액세스 할 수 없습니다.

분류에서Dev

파티션 문제로 인해 HDD에 액세스 할 수 없습니다.

분류에서Dev

플러그인 프로젝트에서 Mahapps를 사용할 수 없습니다.

분류에서Dev

내 Android Studio 프로젝트를 통해 내 Parse Server에 데이터를 업로드 할 수 없습니다.

Related 관련 기사

  1. 1

    Facebook SDK로 인해 Gradle 프로젝트를 컴파일 할 수 없습니다.

  2. 2

    터미널에서 C ++ 프로젝트를 컴파일 할 수 없습니다.

  3. 3

    Gradle 종속성으로 인해 업그레이드 된 Android Studio로 새 프로젝트를 컴파일 할 수 없습니다.

  4. 4

    Intellij에서 프로젝트를 이동했는데 이제 컴파일 할 수 없습니다.

  5. 5

    웹 프로젝트에 파일이 있는지 여부를 확인할 수 없습니다.

  6. 6

    서버 오류 : 다른 Google 도메인 이메일 ID로 프로젝트를 공유 할 수 없습니다.

  7. 7

    Firebase In App Messaging 플러그인을 사용할 때 Flutter가 프로젝트를 컴파일 할 수 없습니다.

  8. 8

    스프링이 아닌 프로젝트에서 aspectJ 인터셉터를 사용할 수 없습니다.

  9. 9

    qtcreator에서 Qt 프로젝트를 컴파일 할 수 없습니다.

  10. 10

    Android 프로젝트에서 aar의 전이 종속성을 컴파일 할 수 없습니다.

  11. 11

    템플릿 메서드가 앞으로 선언 된 클래스에 액세스하면이 포인터없이 만 컴파일 할 수 없습니다.

  12. 12

    C에서 Null 포인터를 이해할 수 없습니다.

  13. 13

    asprintf 함수로 인해 프로그램을 컴파일 할 수 없습니다.

  14. 14

    이중 포인터를 해제 할 수 없습니다.

  15. 15

    마지막 RocksDB 버전 범프 이후 니어 코어 프로젝트를 컴파일 할 수 없습니다.

  16. 16

    파티션 문제로 인해 SSD에 Ubuntu를 설치할 수 없습니다.

  17. 17

    긴 node_module 경로로 인해 Visual Studio 2015에서 프로젝트를로드 할 수 없습니다.

  18. 18

    빌드 서비스가 adb.exe로 인해 Android 프로젝트 폴더를 삭제할 수 없습니다.

  19. 19

    Windows 파일 권한 / 소유권으로 인해 컴퓨터간에 동기화 할 수 없습니다.

  20. 20

    내 구문의 오류로 인해 데이터 파일을 mysql에로드 할 수 없습니다.

  21. 21

    "가져올 수 없음"오류로 인해 모바일 MonoGame 프로젝트를 빌드 할 수 없습니다.

  22. 22

    경로 지정 문제로 인해 docfx 프로젝트를 시작할 수 없습니다.

  23. 23

    MacOSX10.11.sdk에 대한 이상한 오류로 인해 Swift 프로젝트를 전혀 빌드 할 수 없습니다.

  24. 24

    문서에서 Erlang 포트 드라이버 예제를 컴파일하고 사용할 수 없습니다.

  25. 25

    Arduino : gcc 컴파일러로 할 수있는 포인터 ac로 공용 구조체를 전달할 수 없습니다.

  26. 26

    파티션 문제로 인해 HDD에 액세스 할 수 없습니다.

  27. 27

    파티션 문제로 인해 HDD에 액세스 할 수 없습니다.

  28. 28

    플러그인 프로젝트에서 Mahapps를 사용할 수 없습니다.

  29. 29

    내 Android Studio 프로젝트를 통해 내 Parse Server에 데이터를 업로드 할 수 없습니다.

뜨겁다태그

보관