![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Здравствуйте! Я в программе использую запись, которая содержит большой объем информации о ферме.
Код:
TFerma = record //эта запись будет относиться ко всем фермам kUz:integer; //количество узлов kUzRasc:integer; //количество узлов учитывая расцентровку Rascentr:boolean; //расцентрированы ли узлы kSt:integer; //количество стержней kStRasc:integer; //количество стержней, учитывая расцентровку kOp:integer; //количество опорных закреплений kZagr:integer; //количество загружений на ферму Uzly:TMatr4x500; //матрица с координатами узлов. Номер строки соответствует номеру узла Sterzhni:TSterzhVect; //вектор содержащий информацию о стержнях. Номер стержня соотв. номеру в векторе UzlyR:TMatr4x500; //матрица с координатами узлов в случае если узлы расцентрированиы SterzhniR:TSterzhVect; //вуктрор содержащий информацию о стержнях в случае расцентровки узлов Opory:TOpZVect; //вектор содержащий информацию об опорных закреплениях Zhest:TZhest; //жесткость элементов kSvVp:integer; //количество связей по верхнему поясу kSvNp:integer; //количество связей по нижнему поясу Sv_po_Vp:TVect; //номера узлов, в которых есть связи по верхнему поясу Sv_po_Np:TVect; //номера узлов, в которых есть связи по нижнему поясу end; Иногда возникает надобность занулить все поля записи. Делаю так: ZeroMemory(@Ferma,SizeOf(Ferma)); Но при таком способе не все вложенные поля записи зануляются( Падает на мысль, что ZeroMemory придется вызывать для каждого поля отдельно, но это неудобно. Есть ли способ решить эту проблему? |
#2
|
||||
|
||||
![]() Если у тебя в структуре есть записи с динамической длиной то ZeroMemory тебе и не поможет.
А вообще - такую больщую структуру уже наверное стоит оформить в класс. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#3
|
|||
|
|||
![]() "занулять" это неправильный термин. Для integer подойдёт. А если это экземпляр класса, то его надо уничтожить и ссылке присвоить nil. Так что для каждого типа своё решение.
|
#4
|
||||
|
||||
![]() Спасибо за помощь.
С Aristarh Dark я полностью согласен, но программа уже так "разрослась", что без потери работоспособности сложно будет перейти к классу. Я попробую написать процедуру, которая будет уничтожать поля записи согласно их типам и вызывать её вместо ZeroMemory. |