|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Вероятно дилетантский вопрос... Есть запись вида: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 15:32 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Андрей Игоревич, Так, я что-то нажал и оно отправилось, я ещё не успел сформулировать вопрос. Минуточку. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 15:33 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
А теперь попробуй запихать всё это гомно в стек в виде локальных переменных! Я угадал вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 15:34 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 15:37 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
человек может памяти прикупил гггг :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 15:38 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Tactical Nuclear Penguinчеловек может памяти прикупил гггг :) 8 120 601 000 000 000 байт, если real == Double... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 15:42 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
В общем, есть запись вида Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
И есть процедуры: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9.
Вопрос1: как массивы являющиеся частью записи напрямую использовать в процедурах (указанные примеры). На данный момент я использую промежуточный массив и присвоение, но это не эстетично, несколько лишних переменных и действий, и если массивы большие, и действий с ними много уже занимает некоторое время (хотя, вероятно, и небольшое). Пробовал использовать absolute , но смог до конца понять как оно функционирует, да и упоминание как "устаревшее", немного пугает. Вопрос2: (для общего развития): Процедура создает копию входного массива? А если я использую var - процедура всё так же делает копию с последующей заменой, или работает напрямую с памятью исходного массива? Вопрос3: Немного из другой оперы, но рядом. Как сохранить обозначения индексов при использовании массива в процедуре, для пример есть массив: Код: pascal 1.
При использовании в процедуре индексы сбросятся до 0-4, как наиболее адекватно сохранять индексы массивов в процедурах? Можно конечно задавать массив 0-10 и не использовать элементы 0-4, но это как-то... Индексы используются как идентификаторы местоположения, использовать их с поправки (вместо 5-10 сразу 0-4) неудобно для восприятия. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 15:50 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Так и знал, что тут уже нашученно :). чччДУмоляю, эту тему тоже в "Новости Delphi"! ...вслед за этой . Эээ, что? Я что-то пропустил? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 15:53 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Дабы меня не в очередной раз не обвиняли в вранье (хз почему), похвастаюсь результатами прошлых трудов :), это только малая часть :), а то будут вруном звать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:02 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Андрей Игоревич... Вопрос1: как массивы являющиеся частью записи напрямую использовать в процедурах (указанные примеры). На данный момент я использую промежуточный массив и присвоение, но это не эстетично, несколько лишних переменных и действий, и если массивы большие, и действий с ними много уже занимает некоторое время (хотя, вероятно, и небольшое). Пробовал использовать absolute , но смог до конца понять как оно функционирует, да и упоминание как "устаревшее", немного пугает. Вопрос2: (для общего развития): Процедура создает копию входного массива? А если я использую var - процедура всё так же делает копию с последующей заменой, или работает напрямую с памятью исходного массива? Вопрос3: Немного из другой оперы, но рядом. Как сохранить обозначения индексов при использовании массива в процедуре, для пример есть массив: Код: pascal 1.
При использовании в процедуре индексы сбросятся до 0-4, как наиболее адекватно сохранять индексы массивов в процедурах? Можно конечно задавать массив 0-10 и не использовать элементы 0-4, но это как-то... Индексы используются как идентификаторы местоположения, использовать их с поправки (вместо 5-10 сразу 0-4) неудобно для восприятия. var, const, out => массивы копироваться не будут, в процедуре работа будет с переданными массивами "напрямую". ... Процедуру можно объявить как Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Вместо этого все же советую пользоваться Low(), High(): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:13 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
А почему времменнЫх точек ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:15 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
это реактор?? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:16 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Tactical Nuclear Penguin, это улей. Дельфи на пасеках довольно активно используется. Не знал? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:24 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
чччД..... Вместо этого все же советую пользоваться Low(), High(): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
Спасибо, отлично работает, так значит в памяти где-то всё-таки хранятся индексы массивов (или границы?). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:24 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:26 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Андрей ИгоревиччччД..... Вместо этого все же советую пользоваться Low(), High(): Код: pascal 1. 2. 3. 4. 5. 6. 7. 8.
Спасибо, отлично работает, так значит в памяти где-то всё-таки хранятся индексы массивов (или границы?). Если посмотреть (в отладчике на Low(a) и High(a) - там будет 0 и <что-то еще>... просто так нет нужды знать размер массива при его переборе / передаче :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:27 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
GlaysTactical Nuclear Penguin, это улей. Дельфи на пасеках довольно активно используется. Не знал? плотность потока нейтронов? конечно пасека ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:27 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
schiА почему времменнЫх точек ? Ну а как ещё ударение обозначить, жирный шрифт лень впихивать было, и символ со знаком ударения тоже лень было искать. Точки не врЕменные, в временнЫе (хз как их на русском по человечески обозвать), короче keypoints :) Tactical Nuclear Penguinэто реактор?? Думаю по записям в Memo справа это можно понять :). ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:28 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
А я сразу сказал - в "Новости Delphi". Тут и пасека, и секретный физик и петабайты в одном флаконе. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:29 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
чччДА я сразу сказал - в "Новости Delphi". Тут и пасека, и секретный физик и петабайты в одном флаконе. Как я уже писал, я не секретный :). С вопросами 2,3 разобрался, спасибо, остался вопрос 1. Как напрямую использовать массив из записи в процедуре, минуя использование промежуточных массивов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 16:41 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Андрей Игоревич... Как напрямую использовать массив из записи в процедуре, минуя использование промежуточных массивов. Тоже "напрямую". Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 17:03 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
чччДчччДАндрей Игоревич... Как напрямую использовать массив из записи в процедуре, минуя использование промежуточных массивов. Тоже "напрямую". Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
Использование записи нижнего уровня напрямую... И чего я сам не догадался. Но есть недостаток, если рассматриваемый массив находиться на верхнем уровне записи, то я буду через процедуру прогонять ещё хренову тучу данных. Хотя если там var , то особых проблем в этом не будет? Ну и ещё такой совместный вопрос, если в записи будут как раз упомянутые массивы начинающиеся не с нулевого элемента, при использовании в процедуре как части записи - элементы сместятся или нет? Надо проверить... чччД Код: pascal 1. 2.
А что тут происходит? Зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 17:21 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Андрей Игоревич...Но есть недостаток, если рассматриваемый массив находиться на верхнем уровне записи, то я буду через процедуру прогонять ещё хренову тучу данных. Хотя если там var , то особых проблем в этом не будет? Var такая хитрая штука. В процедуру передается не сам элемент, а лишь адрес передаваемого элемента, и она (процедура) работает прямо с "передаваемыми" данными, а сами данные остаются на прежнем месте ("снаружи" процедуры). Если без var - то массивы передаются копированием. В процедуру передается копия массива. За исключением передачи динамических массивов (когда массив объявлен как array of, без указания параметров). В случае динамических массивов все равно как бы "var". В общем, про динамические массивы советую почитать особо. Если const - это все равно как var (т.е. "работа напрямую"), только компилятор смотрит за тем, чтобы ты не попортил передаваемые данные внутри процедуры. Андрей Игоревич... Ну и ещё такой совместный вопрос, если в записи будут как раз упомянутые массивы начинающиеся не с нулевого элемента, при использовании в процедуре как части записи - элементы сместятся или нет? Надо проверить... Не понял вопроса. Туплю. :) Андрей Игоревич... чччД Код: pascal 1. 2.
А что тут происходит? Зачем? "Переданный"в процедуру массив увеличивается в длину в два раза. Добавленные элементы заполняются случайными значениями. Смысла никакого нет, просто демонстрация работы с массивом. Можно не обращать внимания. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2017, 17:33 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
чччД.... Андрей Игоревич... Ну и ещё такой совместный вопрос, если в записи будут как раз упомянутые массивы начинающиеся не с нулевого элемента, при использовании в процедуре как части записи - элементы сместятся или нет? Надо проверить... Не понял вопроса. Туплю. :) Потестил, всё нормально. я боялся что индексы при инициализации (ну или как это грамотно называется) в процедуре опять уползут к нулю. Не уползли. Спасибо за способ. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 09:07 |
|
Использование массива из записи в процедуре (функции).
|
|||
---|---|---|---|
#18+
Андрей ИгоревичКак напрямую использовать массив из записи в процедуре, минуя использование промежуточных массивов. Можно его вообще не объявлять в списке входно/выходных переменных процедуры, и пользовать как "внешнюю" для нее переменную. Это несколько выпадает из канонов, но не запрещается. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2017, 12:48 |
|
|
start [/forum/topic.php?fid=58&tid=2041477]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 156ms |
0 / 0 |