![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Пожалуйста, помогите с задачкой!
{есть тип TSCmd} Type TSCmd = record CMD : String[50]; SQL : String[100]; FILTER : String[100]; TABLE : String[15]; ID: Integer; end; .... var A: TSCmd; B: Array of Byte; begin ..... Как мне преобразовать Тип A в массив B array of byte??? Заранее спасибо ..... end. |
|
#2
|
||||
|
||||
|
А не надо ничего преобразовывать. Сначала устанавливаешь длину массива равную размеру TSCmd. Потом копируешь область памяти того же размера с A в B. И все
![]() ЗЫЖ: Я бы порекомендовал еще посмотреть в сторону packed record |
|
#3
|
||||
|
||||
|
поясню сказанное Aristarh Dark:
Код:
TInfo = packed record a: Word; b: Cardinal; ... end; procedure Save(AStream: TStream); var nfo: TInfo; begin nfo.a := 50; nfo.b := 800000; AStream.Write(nfo,SizeOf(nfo)); end; вот как то так |
|
#4
|
||||
|
||||
|
Вообще-то я имел в виду немного другое:
Код:
Type
TData = packed record
f1:string[5];
f2:integer;
f3:boolean;
end;
var
arrdata:array of byte;
vardata:TData;
begin
vardata.f1:='12345';
vardata.f2:=65536;
vardata.f3:=True;
SetLength(arrdata,SizeOf(TData));
Move(vardata,arrdata[low(arrdata)],SizeOf(TData));
end; |
|
#5
|
|||
|
|||
|
Цитата:
Большое спасибо это именно то, что мне нужно теперь земляне могут спать спокойно ![]() |