微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Delphi帮助程序范围

如何解决Delphi帮助程序范围

我在Delphi中对辅助程序的重新声明有疑问。

HelperDecl.pas

unit HelperDecl;

interface

type
  TCustomField = Word;

  TCustomFieldHelper = record helper for TCustomField
  public
    procedure SampleMethod();
  end;

implementation

procedure TCustomFieldHelper.SampleMethod();
begin
end;

end.

ScopeTest.pas

unit ScopeTest;

interface

uses HelperDecl;

type
  rec = record
    art: TCustomField;
  end;

implementation

uses System.SysUtils;

procedure DoScopetest();
var
  a: TCustomField;
  r: rec;
begin
  a := r.art;
  r.art.SampleMethod(); //Here has the compiler no problems
  a.SampleMethod(); //Undeclared identifier 'SampleMethod'
end;

end.

但是我只为我的本地数据类型定义了一个帮助器(是的,它是从Word派生的)! SysUtils中的帮助程序是Word的帮助程序,而不是我的自定义数据类型!放开我的数据类型!

当我将uses System.SysUtils;移到uses HelperDecl;之前时,它可以工作。但是我想有一个任意单位的使用顺序。

解决方法

问题在于WordTCustomField是同一类型,并且不可能有两个相同类型的记录助手。

如果您改为通过{em> distinct 类型让type TCustomField = type Word; 起作用,

import React from 'react';
import {Route,BrowserRouter} from 'react-router-dom'
import {connect} from 'react-redux'
import Home from './components/home'
import Data from './components/data'
import Nav from './components/nav'

import './App.css';


function App(props) {
  const  data  = this.props.data //error in this line
 
  return (
    <div className="App">
      <BrowserRouter>
        <Nav />
        <Route path='/' exact component={Home} />
        <Route path='/data' component={Data} />
      </BrowserRouter>
    </div>
  );
}
const mapStateToProps=(state)=>{
  return {
      data : state.data
  }
}


export default connect(mapStateToProps)(App);
,

Delphi仅支持单个助手。如果您在范围中有多个助手,则使用距离最近的助手。

您可以定义多个助手并将其与单个类型相关联。 但是,只有零个或一个助手适用于 源代码。在最接近的范围内定义的帮助程序将适用。类 或记录帮助程序范围以常规的Delphi方式确定(对于 例如,在单位的uses子句中从右到左)。

URL

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。