Текущий архив: 2003.03.31;
Скачать: CL | DM;
Внизработа с указателями - что же не так? Найти похожие ветки
← →
StarCon (2003-03-20 11:49) [0]есть 2 рекорда и процедура, которая дает ошибку при компиляции (Invompatible types):
type
TGenTranPoint = ^TGenTran;
TGenTran = packed record
tranid: array[0..3] of char;
end;
type
TGenReplyPoint = ^TGenReply;
TGenReply = packed record
tranid: array[0..3] of char;
end;
procedure tran_process(data: pointer);
var GenTran: TGenTranPoint;
GenReply: TGenReplyPoint;
begin
GenTran := data;
GenReply.tranid := GenTran.tranid;
end;
← →
Clickmaker (2003-03-20 11:54) [1]procedure tran_process(data: pointer);
var GenTran: TGenTranPoint;
GenReply: TGenReplyPoint;
begin
GenTran := TGenTranPoint(data);
GenReply.tranid := GenTran.tranid;
end;
← →
StarCon (2003-03-20 12:07) [2]не помогло
ошибка на строку
GenReply.tranid := GenTran.tranid;
причем если в рекордах есть переменные типа longint - они переприсваиваются без проблем
← →
REA (2003-03-20 12:13) [3]Объяви эквивалентный тип TCharArray03
← →
Smithson (2003-03-20 12:13) [4]Массивы просто так не присвоишь. Либо цикл, либо move. И еще - называй тип указателя на тип с P. То есть не TGenTranPoint, а
PGenTran. Окружающим будет понятнее.
← →
StarCon (2003-03-20 12:24) [5]спасибо - move - это то что надо!
← →
theodor_iv (2003-03-20 13:14) [6]
> StarCon (20.03.03 12:24)
> спасибо - move - это то что надо!
REA прав -- нужно просто создать еще один тип. Вот так:
type
TTranID = array[0..3] of char;
PGenTran = ^TGenTran;
TGenTran = packed record
tranid: TTranID;
end;
PGenReply = ^TGenReply;
TGenReply = packed record
tranid: TTranID;
end;
Тогда массивы можно будет присваивать напрямую. И никакого Move, и уж тем более циклов!
Страницы: 1 вся ветка
Текущий архив: 2003.03.31;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c