Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.009 c
1-60199
OlegM
2003-06-05 12:13
2003.06.19
Как получить имена всех компонентов на форме опред. типа


3-60018
Vorobyev Sergey
2003-05-27 11:13
2003.06.19
Как подсчитать число записей для ЛЮБОГО запроса ?


1-60216
Артем К
2003-06-05 14:53
2003.06.19
Как отсортировать данные в StrinGride


1-60128
pavel_k
2003-06-04 22:27
2003.06.19
Splitter и Hint


3-60062
sunrider
2003-05-28 00:04
2003.06.19
Обработка информации по типу удаленных процедур





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский