|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.01.2012, 00:25 | #1 |
Форумчанин
Регистрация: 29.10.2011
Сообщений: 141
|
Все еще потоки...
вот две функции:
Код:
Код:
вообщем то со стороны кажется глупо, зачем нужны указатели, это для удобства сортировки, удаления и т.п, вообщем так надо. указатель рассчитываю так: 1+(номер элемента)*sizeof(int)+(номер элемента-1)*sizeof(Class); вроде бы все логично, но читается из файла всякая ерунда (Количество записанных элементов находиться правильно а вот сами элементы увы) Скорее всего в логике Show() ошибка, но засечь не могу( |
08.01.2012, 00:28 | #2 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
pinkiller
Все еще потоки... чё за потоки-то? судя по портянке выше - потоки сознания... :D ты по-человечески объясни, чего ты хочешь?
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
08.01.2012, 00:39 | #3 |
Форумчанин
Регистрация: 29.10.2011
Сообщений: 141
|
функция Refresh записывает в файл
функция Show читает хочу чтобы Show читала что записано) Но не просто подряд а по особому правилу) в начале файла стоит интовый указатель на нужный байт с которого надо читать элемент. то есть для первого элемента 5 (4 байта занимает сам указатель) хочу прочитать эту пятерку в переменную arraw что получается успешно, а потом имея эту 5 прочитать значения начинающееся с 5го байта: Код:
|
08.01.2012, 01:09 | #4 |
Форумчанин
Регистрация: 29.10.2011
Сообщений: 141
|
Я тупой... откровенно тупой...
Код:
Я потратил на это с 12 ночи до 4... ^^ |
08.01.2012, 01:15 | #5 |
Форумчанин
Регистрация: 29.10.2011
Сообщений: 141
|
Вот улучшенный код. но проблема в том что он корректен на int и не корректен на char хотя все вроде продумано для любых данных.
Может кто подкинет мысль в чем может быть дело? Код:
|
08.01.2012, 13:21 | #6 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Код:
Разные "православные" способы, как узнать размер файла можно прочитать вот здесь: http://forum.sources.ru/index.php?showtopic=55181 А ещё, размер файла - это априори положительное число. Поэтому, будет более логично юзать unsigned int вместо простого int А ещё, для этих целей существует даже такой православный тип данных: size_t (тоже самое, что и unsigned int, если не ошибаюсь) Последний раз редактировалось _Bers; 08.01.2012 в 13:26. |
08.01.2012, 15:07 | #7 |
Форумчанин
Регистрация: 29.10.2011
Сообщений: 141
|
Эти заморочки важны конешно но у меня файлы по 30 байт пока максимум, мне главное чтобы все остальное работало хорошо, а у меня проблема при записи данных типа char. с интом все нормально.
с интом как записываю два элемента, к нем два интовых указателя - 16 байт памяти. все нормально с чаром - записываю один элемент - 5 байт, все нормально. 4 на интовый указатель, 1 на чаровский элемент. записываю два чаровских элемента файл занимает 11 байт!!!, как!? |
08.01.2012, 15:21 | #8 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
возможно, тебя подводит вот эта вот вещь: reinterpret_cast<тип>
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
нужна одно table где все rows from table 1 но и еще добавленных table 2 | Why | Помощь студентам | 0 | 20.09.2010 10:29 |
Установка XP на SATA и все-все-все | Alex Cones | Операционные системы общие вопросы | 5 | 16.03.2010 17:07 |
Удалить все потоки при закрытии, предварительно не создавав массив их хендлов? | TwiX | Общие вопросы Delphi | 4 | 18.02.2010 22:54 |
Не удаляется файл, не закрыты все потоки для этого файла | oirren | Общие вопросы по Java, Java SE, Kotlin | 1 | 20.12.2009 21:12 |