|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.01.2008, 22:49 | #1 |
Пользователь
Регистрация: 24.01.2008
Сообщений: 12
|
Истинный объём памяти занимаемый записью, record
Сколько не искал, не нашёл, проблема вот в чём:
Код:
Если нельзя получить средствами делфи, можно ли как-нибудь перебрать все поля записи в цикле? ибо параметров может быть много, и функцию статичную писать неудобно К тому же не одну...
Плохо, когда не знаешь, да ещё и забудешь.
|
24.01.2008, 23:03 | #2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Кто запретил использовать Length() ?
TTest, размер записи = SizeOf(TTest); Узнать параметр Length(param1) + Length(param2) |
25.01.2008, 00:08 | #3 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Вот это-то как раз и неверно потому, что там не widestring, а указатель на widestring, который в зависимости от машины может быть и 4, и 8, и 2, и т.д. байт. А вообще, да, sizeof() для самой записи и lstrlenW (и еще множество вариантов, вроде нулевого элемента строки в паскале) для юникод-строк.
|
25.01.2008, 00:38 | #4 | |
Пользователь
Регистрация: 24.01.2008
Сообщений: 12
|
Цитата:
Но придётся ведь все параметры в ручную обрабатывать, о чём я писал выше, а их может быть с десяток... если б можно было сделать перебор в цикле всех полей записи... типа "foreach (a in Ttest) size := size + length(a)*sizeof(char);" - типа подобное что-нибудь?!!
Плохо, когда не знаешь, да ещё и забудешь.
|
|
25.01.2008, 00:41 | #5 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Мессир, Вы чего делаете-то, никак не пойму? размер строки определяете или размер структуры?
|
25.01.2008, 00:52 | #6 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
sizeof(char) - ничего подобного сроду не видел ))) какой смысл умножать на 1 ? Или я математику призабыл... Поставьте точный вопрос ! И зачем всякие циклы если структуру всеравно не поменять во время выполнения программы. Опишите функцию которая возвращает размер структуры и юзайте ее, в чем проблема, уточните, что вы делаете со структурой ?
Последний раз редактировалось BOBAH13; 25.01.2008 в 00:58. |
25.01.2008, 00:55 | #7 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
|
25.01.2008, 00:59 | #8 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Извините, а не припомню чтобы в дельфи ( я использую 7ю версию ) был такой тип TChar ?! и даже если так, то какой смысл умножать на это ?!
|
25.01.2008, 01:04 | #9 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Потому, что у него размер short - два байта
|
25.01.2008, 01:04 | #10 |
Пользователь
Регистрация: 24.01.2008
Сообщений: 12
|
Эх, нужно определить размер того, что хранится в структуре. Есть запись, в переменных param1 & param2 хранятся значения, переменных этих может быть 10, может быть 20, и надо определить размер в байтах всей записи! Не отдельно каждого поля записи! И не размер указателей на widestring, а именно того, что хранится в записи для последующей блочной записи в файловый поток.
Вот я и хочу описать функцию, которая высчитывает размер всех данных, хранящихся в структуре, но я не хочу писать типа: inc(size, lstrlenW(param1)); inc(size, lstrlenW(param2)); inc(size, lstrlenW(param3)); это было бы неплохо как-то автоматизировать... Ибо таких записей может быть несколько, и для каждой писать такую функцию, конечно, не составит огромного труда, но как-то некрасиво получается...
Плохо, когда не знаешь, да ещё и забудешь.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
определить тактовою частоту процессора и узнать название активной видеокарты и объём памяти | SalasAndriy | C++ Builder | 7 | 14.04.2012 16:17 |
Найти объём куба и площадь его боковой поверхности BASIC | Ветренная | Помощь студентам | 23 | 02.06.2008 13:15 |
record/file | potion | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 10.05.2008 20:15 |
ОБъём скачанного из интернета | Kostia | Работа с сетью в Delphi | 2 | 23.11.2007 00:25 |
Направьте на путь истинный! | [FlekS] | Помощь студентам | 3 | 20.02.2007 11:51 |