39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
||||||
1 | ||||||
Как создать record внутри которого есть динамический массив с record-ами?27.12.2015, 20:06. Показов 3217. Ответов 23
Метки нет Все метки)
(
Упрощу код, чтоб не писать полные record-ы:
0
|
|
27.12.2015, 20:06 | |
Ответы с готовыми решениями:
23
Создать массив потоков -- Record, object or class type required Голосовалка, ошибка: Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. Ошибка Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record ADODB.Field error '80020009' Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record. |
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 20:09 | 2 |
С чего бы он переменный ?
Как он был равен SizeOf(TPeInf), так им и останется, вне зависимости от того вызывал ты SetLength или не вызывал. Размер записи вычисляется на стадии компиляции, а не в ранрайм
0
|
39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
|
27.12.2015, 20:11 [ТС] | 3 |
Ну и как быть в моем случае?
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 20:16 | 4 |
а что тебя смущает ?
0
|
39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
|
27.12.2015, 20:17 [ТС] | 5 |
Не компилируется, я же в коде написал ошибку.
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 20:20 | 6 |
а чем собссно не угодили списки ?
0
|
39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
|
27.12.2015, 20:22 [ТС] | 7 |
Просто так что-ли вопросы задаете? Вас мои ответы не интересуют? Или я не понимаю ваших вопросов?
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 20:29 | 8 |
У меня нет такой ошибки - все нормально компиляется.
0
|
39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
|
27.12.2015, 20:31 [ТС] | 9 |
Спасибо, пойду косяк в коде искать. Видимо где-то в передачах в функцию, потерял свойство var этого массива.
Просто тут я код упростил. А у меня там посложнее, этот рекорд передается туда-сюда.
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 20:40 | 10 |
потому и поинтересовался почему бы не использовать объекты, а не записи
объекты всегда представлены указателями
0
|
39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
|
27.12.2015, 20:44 [ТС] | 11 |
Просто внешний рекорд я заполняю в два захода с помощью CopyMemory прямо из открытого файла (а там во внешнем, побольше будет переменных, чем я написал). А у объекта не известно, как в памяти выстроятся адреса переменных. У записей они точно идут друг за другом.
PS Нашел, сам был виноват, для красоты скобки лишние поставил.
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 20:47 | 12 |
Надеюсь поле Sections при этом не затрагивается ?
Объект по сути - та же запись.
0
|
39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
|
27.12.2015, 20:51 [ТС] | 13 |
Ну естественно, для Sections, пока только пишется код.
Не стал разбираться. С рекордами точно уверен, потому-что долго их в дизассемблере гонял, чтоб убедиться. Кстати вместо record я использую packed record, чтоб не было выравнивания.
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 20:55 | 14 |
Ну и с объектами все точно так же - смещения полей соответствуют порядку их объявления
Добавлено через 59 секунд И это правильно.
0
|
39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
|
27.12.2015, 21:03 [ТС] | 15 |
А если объект сложный, как вот я объявляю? Между первым элементом массива и последним элементом внешней записи, не будет никаких служебных байт? Или то-же самое, но между последним элеменом массива и следующим элементом внешней записи?
Добавлено через 2 минуты А стоп, затупил. Прошу прощения. Тут-же не массив а указатель на него.
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 21:07 | 16 |
0
|
39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
|
27.12.2015, 21:10 [ТС] | 17 |
Тоесть, если я буду использовать свою программу на 64-х битной ОС, то указатель изменит размерность на QWord? Даже если программа будет 32-х битная.
Или все-же прокладка wow64, оставит DWord?
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 21:13 | 18 |
Компилятор не знает ни о каких "прокладках".
Ему сказали что приложение должно работать в 32-битном окружении - он строит код на базе 32-битных указателей. Скажут про 64-битное - будет опираться на 64-битные.
0
|
39 / 2 / 1
Регистрация: 24.11.2012
Сообщений: 246
|
|
27.12.2015, 21:16 [ТС] | 19 |
Понятно, значит под словом "платформа" подразумевалось "платформа компилятора", а не "платформа ОС".
0
|
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.12.2015, 21:20 | 20 |
Платформа компилятора однозначно связана с целевой ОС-платформой.
dcc64 генерит код для 64-битной ОС-платформы, dcc32 - для 32-битной
0
|
27.12.2015, 21:20 | |
Помогаю со студенческими работами здесь
20
Послать/принять динамический Record через сокеты Массив: Как заполнить массив, и как добраться до элемента массива record'ов? Record: определить марку вина, которого больше всего на складе Копирование из RECORD в RECORD Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |