![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день всем. Прошу помощи со следующим:
Код:
unit Control;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
CommandType = record {Тип команда}
Address: byte;
Checksum: byte;
Comm1,Comm2: byte;
NData: byte;
Data1, Data2, Data3, Data4, Data5, Data6: byte;
end;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Button3: TButton;
Button4: TButton;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Label9: TLabel;
GroupBox3: TGroupBox;
Button5: TButton;
{ procedure Button1Click(Sender: TObject);}
procedure StartMove(Sender: TObject);
{ procedure SendSettings(Sender: TObject);}
procedure Send(Sender: TObject; CommandData: CommandType);
private
{ Private declarations }
public
{ Public declarations }
end;
const
Update: CommandType = (Address:0; Checksum:0; Comm1:0; Comm2:$1A; NData:0; Data1:0; Data2:0; Data3:0; Data4:0; Data5:0; Data6:0);
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Send(Sender: TObject; CommandData: CommandType);
begin
Close;
end;
procedure TForm1.StartMove(Sender: TObject);
begin
Send(Sender, Update); :confused:
end;
{procedure TForm1.Button1Click(Sender: TObject);
begin
SendSettings(Sender);
end;}
end.Вылезает ошибка Incompatible types: 'CommandType' and 'procedure, untyped pointer or untyped parameter' с указанием на строку, где стоит ![]() Последний раз редактировалось Admin, 23.06.2011 в 18:38. |
|
#2
|
||||
|
||||
|
Код:
Send(Sender, Control.Update); |
|
#3
|
|||
|
|||
|
Спасибо, NumLock!
Сделал по вашему указанию, теперь ошибка [Fatal Error] Control_Project1.dpr(10): Internal error: SY576 сначала указывал на строку Application.Initialize; когда попытался сделать Build - стал указывать тремя одинаковыми ошибками на строку Код:
type
CommandType = record {Тип команда}
Address: byte; <-----
Checksum: byte;
Comm1,Comm2: byte;
NData: byte;
Data1, Data2, Data3, Data4, Data5, Data6: byte;
end;Люди в интернетах пишут, что это внутренняя ошибка компилятора, и ничего с этим не сделать. Действительно ли ничего и следует как-то иначе составлять код (например, используя массивы вместо записей)? |
|
#4
|
||||
|
||||
|
Delphi закрой и запусти заново.
|
|
#5
|
|||
|
|||
|
Так и сделал, действительно помогло.
Благодарность NumLock'у. |
|
#6
|
|||
|
|||
|
Проблема усложняется.
Возможно ли задать константу в виде записи, одно из полей которых не строковый массив (с точки зрения принципа)? Код:
ype
CommandType = record {Тип команда}
Address: byte;
Checksum: byte;
Comm1,Comm2: byte;
NData: byte;
Data: array[1..6] of byte;
end;Код:
const Upd: CommandType = (Address:0; Checksum:0; Comm1:0; Comm2:$1A; NData:0; Data[1]:0; Data[2]:0; Data[3]:0; Data[4]:0; Data[5]:0; Data[6]:0); |
|
#7
|
||||
|
||||
|
Код:
const Upd: CommandType = (Address:0; Checksum:0; Comm1:0; Comm2:$1A; NData:0; Data:(1, 2, 3, 4, 5, 6)); |
|
#8
|
|||
|
|||
|
NumLock, спасибо еще раз за отзывчивость!
|