2016-02-11 2 views
1

Я новый разработчик Delphi и возникают странные проблемы. Я должен добавить подразделение под названием «Фильтры» в моем основном названии Unit1 (имя по умолчанию). Но, когда я пытаюсь запустить код: [Ошибка] Unit1.pas (48): Несовместимые типы. Если я воспользуюсь фильтрами из «uses», запуск кода. Кто-то знает, как это решить.Несовместимые типы при добавлении блока в основной блок

unit Unit1; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, Menus, StdCtrls; 

type 
    ArrayOfInteger = array of integer; 
    TMain = class(TForm) 
    MainMenu1: TMainMenu; 
    options: TMenuItem; 
    checkResult: TMenuItem; 
    GerarJogos1: TMenuItem; 
    exit: TMenuItem; 
    edtGame: TEdit; 
    mmoResult: TMemo; 
    btnConfirm: TButton; 
    procedure btnConfirmClick(Sender: TObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    Main: TMain; 

implementation 
uses Utils, Error, Filters; 
{$R *.dfm} 

procedure TMain.btnConfirmClick(Sender: TObject); 
var utils: TUtils; 
var filter: TFilters; 
var error: Errors; 
var num: ArrayOfInteger; 
var nstr, str: string; 
begin 
    SetLength(num, 6); 
    FillChar(str, SizeOf(str), #0); 
    FillChar(nstr, SizeOf(nstr), #0); 
    utils := TUtils.Create; 
    filter := TFilters.Create; 
    error := Errors.Create; 
    str := edtGame.Text; 
    num := utils.strInput(str); 

Строка 48: num: = utils.strInput (str);

unit Filters; 

interface 

uses Classes, SysUtils, Math; 

type 
    ArrayOfInteger = array of integer; 
    TFilters = class 
    private 
    protected 
    public 
    Constructor Create; 

    // function isPair(number: integer): Boolean; 
    //function fSum(numbers: ArrayOfInteger): Boolean; 
    //function fNLNPNO(numbers: ArrayOfInteger): integer; 
    end; 

implementation 

Constructor TFilters.Create; 
begin 
    Inherited Create; 
end; 

ответ

5

Вы ArrayOfInteger определены в двух различных единицах измерения, которая вызывает эту ошибку. Удалите определение с одного из единиц или укажите в var num: ArrayOfInteger, какое определение вы хотите использовать, например: TMain.ArrayOfInteger

+0

СПАСИБО !!!!!!! Я удаляю определение во всех классах и оставляю всего одну единицу. БОЛЬШОЕ СПАСИБО! –

+0

Нет проблем, у меня эта проблема много в моем программировании. Очень часто и легко исправить! – GrizzlyManBear

+0

Вы также должны переименовать свой 'var utils: TUtils' в нечто другое. Компилятор, вероятно, что-то испортит, если у вас есть переменная, а класс - тот же. – GrizzlyManBear

Смежные вопросы