标签: delphi-units

如何在Delphi中使用Unit文件

我只是试图让单独的单元挂起来使我的代码更加封装.我正在尝试将我的方法的公共/私有声明整理出来,所以我可以从其他使用的单元中调用它们testunit.在这个例子中,我想hellofromotherunit公开,但stickletters私人.

unit testunit;    

interface

uses
  Windows, Messages, Dialogs;    

implementation

function stickletters(a,b:string):string;
begin
  result:=a+b;
end;

procedure hellofromotherunit();
begin
 showmessage(stickletters('h','i'));
end;

end.
Run Code Online (Sandbox Code Playgroud)

我似乎无法从其他单位复制私人/公共结构,如:

Type
private
function stickletters(a,b:inter):integer;
public
procedure hellofromotherunit();
end
Run Code Online (Sandbox Code Playgroud)

delphi pascal private public delphi-units

2
推荐指数
2
解决办法
6645
查看次数

在Delphi中定义其他单元的类型

Var
     A : Array [1..4] of Integer;
     B : Array [1..4] of Integer;

Begin
    A := B;
Run Code Online (Sandbox Code Playgroud)

不会起作用,因为loren-pechtel 在这里说 问题是A和B对我来说是不同的单位.那么,有没有办法从另一个类中的现有类型定义类型定义?

delphi parameters types definition delphi-units

2
推荐指数
2
解决办法
2858
查看次数

Delphi中的"复制"单元名称,组件引用,编译问题

我们使用不同供应商的几个组件包,其中两个都在其目录结构中提供了"regexp.pas"单元.

现在的问题是,无论我们编译它们的顺序如何,其中一个抱怨使用错误版本的各种其他单元编译单元.

有没有办法正确处理这个问题?

delphi delphi-units

2
推荐指数
1
解决办法
1083
查看次数

与相互使用的类的循环引用问题

我有以下两个类:

TcmTPDataPanel = class(TcmTPBasePanel)
    Database: TnxDatabase;
    Session: TnxSession;
  private
    FDataConnector: TcmTPDataConnector;
    MyNxDataBase: TnxDatabase;
    MyNxSession: TnxSession;
    MyRefNxDataBase: TnxDatabase;
  protected
    procedure Disconnect; virtual; abstract;
    procedure Refresh; virtual;
    procedure Requery; virtual; abstract;
  public
    procedure Connect;
  published
    property DataConnector: TcmTPDataConnector read FDataConnector write
        FDataConnector;
  end;


TcmTPDataConnector = class(TComponent)
  private
    FDatabase: TnxDatabase;
    FObservers: TList;
    FTableForCategories: TnxTable;
    FTableForItemCategoryLinks: TnxTable;
    FTableForItems: TnxTable;
    procedure SetTableForItemCategoryLinks(const Value: TnxTable);
  protected
    procedure IterateObservers;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Register(Instance: TcmTPDataPanel);
    procedure Unregister(Instance: TcmTPDataPanel);
  published
    property Database: TnxDatabase read FDatabase …
Run Code Online (Sandbox Code Playgroud)

delphi circular-dependency delphi-units custom-component

1
推荐指数
1
解决办法
1699
查看次数

用于单元文件中的单元文件路径

我有问题.我会试着解释一下.

我有一个单元,有一个类,可能会有新的功能.

D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas 8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas

它们都有相同的类:IClass_1 = class

我使用代码编号为这个文件的不同版本.

另一个单元文件(UnitFile2.pas)使用该单元文件(UnitFile1.pas).

此外,第二个单元文件(UnitFile2.pas)具有不同的版本.

F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas 14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas

它们都有相同的类:IClass_2 = class(IClass_1)

现在问题开始了;

"F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas"需要"D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas"

"14CEEFAFF1D64DDD8CBDEDD334D4A3FF\UnitFile2.pas"需要"8DC8977E7A7B469AACFE3CC77CA7075E\UnitFile1.pas"

但文件名是相同的(我需要一个像这样的系统.所以它们是相同的).在单元文件中,delphi不允许我这样写;

在文件F94C439C822E490DB228F2C16EF2C190\UnitFile2.pas; 在'D3BF4E849ACC45249B990F802EFB1F15\UnitFile1.pas'中使用UnitFile1;

我希望我能说出我的问题.如何告诉编译器我想要使用哪个单元文件的路径?(我使用的是Delphi-7)

delphi path delphi-7 uses-clause delphi-units

1
推荐指数
1
解决办法
6917
查看次数

访问存储在另一个单元Delphi中的数据

在我的程序的Unit2中,我有以下代码:

TValue = Record
  NewValue,
  OldValue,
  SavedValue : Double;
end; 

TData = Class(TObject)
Public
  EconomicGrowth : TValue;
  Inflation : TValue;
  Unemployment : TValue;
  CurrentAccountPosition : TValue;
  AggregateSupply : TValue;
  AggregateDemand : TValue;
  ADGovernmentSpending : TValue;
  ADConsumption : TValue;
  ADInvestment : TValue;
  ADNetExports : TValue;
  OverallTaxation : TValue;
  GovernmentSpending : TValue;
  InterestRates : TValue;
  IncomeTax : TValue;
  Benefits : TValue;
  TrainingEducationSpending : TValue;
End;
Run Code Online (Sandbox Code Playgroud)

然后我在Var中声明Data:TData.

当我尝试在Unit1中执行以下操作时:

  ShowMessage(FloatToStr(Unit2.Data.Inflation.SavedValue));
Run Code Online (Sandbox Code Playgroud)

我收到一条EAccessViolation消息.有没有办法从Unit1访问存储在'Data'中的数据而不会出错?

delphi variables class delphi-units data-structures

1
推荐指数
1
解决办法
2552
查看次数

Delphi Unit局部变量 - 如何使每个实例都是唯一的?

在下面的单元中,我在IMPLEMENTATION部分声明了一个变量 - 该单元的本地变量.我还有一个在TYPE部分声明的过程,该过程接受一个参数并将该参数分配给有问题的局部变量.这个TFrame的每个实例都通过一个唯一的变量传递passMeTheVar.

我想要它做的是为帧的每个实例保留它自己的变量版本,与其他变量不同,并使用它来定义它的运作方式.然而,似乎正在发生的是所有实例都使用相同的值,即使我明确地将每个实例传递给另一个变量.

即:

Unit FlexibleUnit;
interface
uses
//the uses stuff
type
TFlexibleUnit=class(TFrame)
   //declarations including
   procedure makeThisInstanceX(passMeTheVar:integer);
private
//
public
//
end;

implementation
uses //the uses
var myLocalVar;

procedure makeThisInstanceX(passMeTheVar:integer);
begin
myLocalVar:=passMeTheVar;
end;

//other procedures using myLocalVar 
//etc to the 
end;
Run Code Online (Sandbox Code Playgroud)

现在在另一个Form中的某个地方,我将这个Frame放到了Design窗格上,有时在一个Form上有两个这样的框架,并在适当的位置声明它等等.每个都是独一无二的:

ThisFlexibleUnit : TFlexibleUnit;
ThatFlexibleUnit : TFlexibleUnit;
Run Code Online (Sandbox Code Playgroud)

当我做一个:

ThisFlexibleUnit.makeThisInstanceX(var1); //want to behave in way "var1"
ThatFlexibleUnit.makeThisInstanceX(var2); //want to behave in way "var2"
Run Code Online (Sandbox Code Playgroud)

它们似乎都共享相同的变量"myLocalVar".

原则上,我做错了吗?如果这是正确的方法那么这是调试我所拥有的东西(这个问题太大而无法发布),但如果这在原则上不正确那么有没有办法做我建议的事情?

编辑:

好的,所以这里学到的教训是类定义就是这样.许多类可以放在一个单元中,该Type部分中所有类的所有实例共享单元的实现部分.

delphi variables local instances delphi-units

1
推荐指数
1
解决办法
3881
查看次数

delphi中的单位是否与其他语言中的类相同?

我需要编写一些Delphi代码,但我之前没有使用Delphi的经验.我见过人们编写一些代码,称为unit1unit2使用其中的代码导入它.那么,我可以将该单元视为Java或C#中的类吗?

delphi class delphi-units

1
推荐指数
2
解决办法
1079
查看次数

如果我在Delphi中只有它的字符串名称,如何引用一个单元(在运行时)?

我有类型的区别单位具有相同的名称,我有一个字符串中的单位名称.我需要访问该单元的特定类型.我怎么做?

例:

unit Unit1

type
   TFooType = (
      bar1,
      bar2
   );
Run Code Online (Sandbox Code Playgroud)

那么,我有另一个单位

unit Unit2

type
   TFooType = (
      foo1,
      foo2,
      foo3
   );      
Run Code Online (Sandbox Code Playgroud)

而且,在我的代码中的某处,我有一个字符串变量"UnitName",其中包含值"Unit1",我想通过变量访问Unit1的"TFooType"类型.

我正在使用Delphi 2007

对不起,我的英语不好.

提前致谢.

delphi reference delphi-units

0
推荐指数
1
解决办法
345
查看次数