Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.14;
Скачать: CL | DM;

Вниз

union в Delphi   Найти похожие ветки 

 
stain   (2002-10-05 23:53) [0]

Скажите как в Delphi описать тип который будет аналогом union в C.

Это написано на C:
typedef struct tagRECORD
{
int type;
union
{
char ch;
int i;
double dbl;
};
} RECORD;


void CharToVar(RECORD *ptr, char ch)
{
ptr->type = 1;
ptr->ch = ch;
}

Опишите эту структуру на Delhi:
А то я попытался это сделать, но как-то не получилось:

type
P_VARIANT = ^T_VARIANT;
T_VARIANT = record
index : integer;
case vtvalue : integer of
1: (ch : shortint);
2: (i : integer);
3: (dbl : double);
end;

procedure IntToVar(var pvar : P_VARIANT; i : integer); external "test1.dll";
..............

procedure TForm1.Button1Click(Sender: TObject);
var vtvalue : T_VARIANT;
ptr : P_VARIANT;
i,j : integer;
begin
i:= 1;
ptr := @vtvalue;
IntToVar(ptr,i);
j:= vtvalue.i;
end;


 
Оливейра ©   (2002-10-06 01:53) [1]

Тогда уж и код IntToVar на сях приводи,
а так - сразу в глаза бросается- нахрена указатель по ссылке передавать?
var pvar : P_VARIANT



 
stain   (2002-10-06 11:08) [2]

void CharToVar(RECORD *ptr, char ch)
{
ptr->type = 1;
ptr->ch = ch;
}

void IntToVar(RECORD *ptr, int i)
{
ptr->type = 2;
ptr->i = i;
}

void DoubleToVar(RECORD *ptr, double dbl)
{
ptr->type = 3;
ptr->dbl = dbl;
}



Страницы: 1 вся ветка

Текущий архив: 2002.10.14;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
1-45240
Шурик Ш
2002-10-02 12:09
2002.10.14
Хранение доп. полей для узлов TreeView


3-45183
Мышь
2002-09-18 20:00
2002.10.14
Поиск в DataSet по полю типа Date


3-45169
Дима1
2002-09-20 13:07
2002.10.14
Как присвоить параметру ADOQuery значение NULL ?


7-45595
snoup
2002-08-02 20:18
2002.10.14
Подскажите плиз какой ф-ей можно узнать о системном железе, напри


1-45404
dimonf
2002-10-03 10:36
2002.10.14
Подскажите плиз, как распахнуть MDI окно при FormActivate?