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

Вниз

Скопировать массив в массив   Найти похожие ветки 

 
Sarge   (2003-06-05 15:33) [0]

Есть эти стрктуры:
Type TSelectedRights=packed record
//Здесь много переменных с типом Boolean
F1,
F2,
..
F30: Boolean;
End;

Type PSelectedRights = ^TSelectedRights;

Есть массив MasRights: array of PSelectedRights

Затем я высвечиваю форму, на ней TCheckListBox, где отмечаю галочки.
После этого

Var Temp: array of Boolean;
t: Integer;
Begin
SetLength(MasRights,1);
SetLength(Temp,CheckListBox.Items.Count);
For t:=Low(Temp) to High(Temp) Do Temp[t]:=CheckListBox.Checked[t];

Теперь вопрос: Как скопировать Temp на элемент массива MasRights[0] ?? Чтобы вручную не назначать каждую переменную соответствующему Checked"у ?
Т.е. я думаю, что-то типа CopyMemory. Так не получается:

CopyMemory(Pointer(MasRights[0]),Pointer(Temp[1]),SizeOf(Temp));

End;

:( Подскажите плиз


 
Skier ©   (2003-06-05 15:42) [1]

Move(Temp[ 0], MasRights[ RequiredIndex]^.F1, ...)


 
evvcom ©   (2003-06-05 16:22) [2]

Судя по

> F1,
> F2,
> ..
> F30: Boolean;

гораздо удобнее использовать перечисляемый тип и множество. Тогда вся эта "беда" разместится не в 30*4=120 байтах, а всего в 4-х! А далее копирование будет вообще простым MasRights[RequiredIndex]^ := TempSet;


 
Skier ©   (2003-06-05 16:31) [3]

+ evvcom © (05.06.03 16:22)
-Пишешь три функции SetBit(...) ClearBit(...) CheckBit(...)
-и теперь... в типе Byte можно хранить 8 флажков
в типе Word - 16 и т.д.
Выигрываешь и во времени и в памяти.



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

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

Наверх




Память: 0.47 MB
Время: 0.013 c
14-60351
RIMMER
2003-06-02 10:30
2003.06.19
Экзамен уже сегодня...


1-60234
stream
2003-06-05 16:19
2003.06.19
загрузка курсора


14-60369
Rzhevskiy
2003-06-01 17:38
2003.06.19
Экзамен уже завтра, а темы сочинений я ещё не знаю....


1-60150
Zew
2003-06-04 18:19
2003.06.19
через определённое время прибавлять число


3-60088
LeReve
2003-05-27 23:22
2003.06.19
как програмно изменить запись в БД???