![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
![]()
Привет всем!
У меня такая ситуация: Короче есть рекод и в нём переменные, снасало все было ОК но потом я решил добавить несколько переменных. И что-же у меня стали прогисходить странные вещи. ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
![]()
Пример кода хотябы приведи... а так тыкать пальцем со словами "гдето там не работает" бесполезно, так никто помочь не сможет
кстати очень часто вылазят ошибки если не указал размер рекорда... ну или из-за невнимательности, возможно гдето чтото пропустил
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} Последний раз редактировалось Johnson; 17.07.2008 в 10:13. |
![]() |
![]() |
![]() |
#3 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Altera, код в студию )
I'm learning to live...
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
![]()
Если идёт речь о полях в RECORD, то получается следующее:
изменняя типы, размерности полей, добавяя новые или удаляя определённые поля, меняется размер записи. При чтении и записи происходит забор данных из файла по размеры заданной RECORD. Простой пример: Код:
Поэтому поля могут несовпадать с содержимым. |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
![]()
Ну, я хотел переделать свой Клокер, а точнее его будильник в органайзер.
Для будильника, как для таймера и секундомера, у меня вуделена запись, котороя содержит в своих переменных все порамеры одного будильника: Код:
Короче вот такая история. Не знаю, может кто-то сталкивался с подобной проблемой, на мой взгляд, в alarms_rec правдо много переменных, но разве это должно влиять на работу? Могу ещё одно заметить: Когда я работал с цветом, RGB, то для R, G и B значений взял byte, т.к. у него диапозон от 0 до 255 и у R, G и B точно такой-же. Так хрен! он мне половину цветов срезал! И воодще было что-то ужасное. Потом я взял word, ситуатион стала лучше, но не на много. Потом взял integer и всё стало ОК. Что за юмор такой, не понимаю. Объясните плиз, может я что-то не знаю о типах данных? Вот здесь помойму всё ясно видно... Помогите плиз! |
![]() |
![]() |
![]() |
#6 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Ужас Оо
Ошибки наверняка в коде, а не в обявлении записи. Вообще, страшно неоптимальный подход, от кучи переменных можно запросто избавиться, например вместо days: array [1..7] of boolean days: byte и отмечать нужные дни установкой всего одного бита (00000001 - понедельник, 00010001 - понедельник и пятница ...) дату хранить в формате TDateTime и т.д.
пыщь
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
![]()
Как дополнение, в Record надо ограничить размер у String`а от 1 до 255, типа string[255].
|
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#9 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
![]()
Если явно указать string[255] или shortstring - одна такая запись будет занимать чуть ли не килобайт, а с ansistring динамическая память используется, хотя неизвестно что быстрее
![]() Но если использовать ansistring (по умолчанию string = ansistring) в записях, то каждый "экземпляр" кажись нужно явно создавать/уничтожать через New/Dispose, видимо этого сделано не было (или заюзал GetMem и FreeMem, которые почему-то нифига не работают в таких конструкциях)
пыщь
|
![]() |
![]() |
![]() |
#10 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
![]()
Возможно не указал размер массива, либо указал неправильно... я например обычно использую такую процедуру:
SetLength(massiv,1000); число обозначает длину массива
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} |
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вальс переменных | Иллидан | Общие вопросы Delphi | 9 | 27.01.2008 10:39 |
Замена переменных | NoName_emaNoN | Win Api | 4 | 18.01.2008 09:05 |
Ошибка в переменных | Maugli-rus | Общие вопросы Delphi | 2 | 24.12.2007 07:44 |
список переменных | krasivosleva | Microsoft Office Excel | 2 | 26.11.2007 19:32 |
Проверка переменных | *_ViruS_* | Общие вопросы C/C++ | 3 | 21.09.2007 21:33 |