Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Вопрос по теме запись и чтение буфера с бинарного файла. Ниже приведен код, не могу разобраться в чем ошибка, почему моя проверка не работает. Помогите пожалуйста. .срр SmartStructBuffer::SmartStructBuffer(int strSize /*=5*/) { const int MIN_BUF_SIZE = sizeof(Daten); m_size = 0; // Size in Bytes m_maxSize = (strSize < MIN_BUF_SIZE ? MIN_BUF_SIZE :strSize); m_buff = new char [m_maxSize]; } SmartStructBuffer::SmartStructBuffer (const SmartStructBuffer& other) // Kopie Konstruktor { m_maxSize = other.GetmaxSize(); m_size = other.GetSize(); m_buff = new char [m_maxSize]; memcpy(m_buff, other.GetRawBuffer(), m_size); } Daten SmartStructBuffer::operator [](int p) { if((p +1) * sizeof(Daten) >= m_size + 1 || p < 0 ) throw out_of_range ("offset ist out of range"); else { Daten *pDaten; pDaten = (Daten*)(m_buff + p * sizeof(Daten)); return *pDaten; } } SmartStructBuffer & SmartStructBuffer::operator = (const SmartStructBuffer & other) { for(int i = 0; i<m_size; i++) m_buff[i] = other.m_buff[i]; return *this; } SmartStructBuffer::~SmartStructBuffer(void) { delete [] m_buff; } int SmartStructBuffer::GetSize() const { return m_size; // wie viel Bytes belegt } int SmartStructBuffer::GetmaxSize() const { return m_maxSize; // letzte Element in Array } bool SmartStructBuffer::WriteToFile(const char* &filename) { fstream myFile( filename,ios::binary | ios::out); if(!myFile.is_open()) { cerr << "Fehler beim Öffnen der Datei " << filename << endl; return false; } else { myFile.write((char*)&m_maxSize, sizeof(m_maxSize)); myFile.write((char*)&m_size, sizeof(m_size)); myFile.write(m_buff, sizeof(m_buff)); } myFile.close(); return true; } bool SmartStructBuffer::ReadFromFile(const char* &filename) { fstream myFile (filename, ios::binary | ios::in); if(!myFile.is_open()) { cerr << "Fehler beim Öffnen der Datei " << filename << endl; return false; } else { myFile.read((char*)&m_maxSize, sizeof(m_maxSize)); myFile.read((char*)&m_size, sizeof(m_size)); delete[] m_buff; m_buff = new char [m_maxSize]; m_buff = new char [m_size]; myFile.read(m_buff, sizeof(m_buff)); }[SRC c++][/SRC] myFile.close(); return true; } Структура: struct Daten { int i; float f; double d; char c; Daten(int i ) { this->i = i; f = i; d = i; } bool operator==(const Daten& a) const { return (this->i==a.i && this->f == a.f && this->d == a.d && this->c == a.c); } }; Моя проверка: int main() { SmartStructBuffer sb(sizeof(Daten)); const int IT = 5; for(int i = 0; i < IT; i++) { Daten s(i); sb.Add(s); } const char* pFILENAME = "D:\\01.bin"; sb.WriteToFile(pFILENAME); SmartStructBuffer sb2(123); sb2.ReadFromFile(pFILENAME); assert(sb.GetmaxSize() == sb2.GetmaxSize()); for(int i =0; i < sb2.GetSize(); i++) { assert(sb[i] == sb2[i]); } return 0; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 11:56 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, надо как бы тоже объявление SmartStructBuffer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:29 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:32 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:33 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Не работает вот эта часть assert(sb[i] == sb2[i]); Помогите пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:37 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, Так убери assert, будет работать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:52 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Натренировал свой хрустальный шар. Даже можно сказать, хрустальные шары, если вы понимаете юмор. Ошибка тут. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:57 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Хорошо, а конкретно как это исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:16 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, sizeof правильный поставь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:30 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
какой может быть правильный если мне надо записать размер буфера туда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:47 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Причина я думаю в bool SmartStructBuffer::ReadFromFile(const char* &filename) там надо правильно считать обьект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:48 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Причина я думаю в bool SmartStructBuffer::ReadFromFile(const char* &filename) там надо правильно считать обьект Да, и там тоже размер неправильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:52 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, Всё, топик можно закрывать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:52 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
нет, я не могу разобраться как же будет правильно, помогите пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:13 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
и дело не в размере, а в том что содержание обьектов не соответствует. как это исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:15 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988как это исправить? Сначала проверь правильно ли оно записывается в файл. Если неправильно - отлаживай процедуру записи по шагам, проверяя все значения пока не найдёшь место, где то, что ты о ней воображаешь, начинает расходиться с реальностью. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:28 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, а как именно можно проверить правильно ли в файле записано. Ведь при открытии в файле ничего не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:32 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Что нужно дописать в функции bool SmartStructBuffer::ReadFromFile(const char* &filename) чтобы второй обьект был равным первому по содержанию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:48 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Спасибо за ответ, а как именно можно проверить правильно ли в файле записано. Ведь при открытии в файле ничего не видно. less hexdump ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 16:31 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Никто не может найти ошибку и помочь? Задание как мне сказали несложное, я только учусь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 16:58 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988при открытии в файле ничего не видно. Открывай HEX-редактором. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 17:05 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Никто не может найти ошибку и помочь? Задание как мне сказали несложное, я только учусь Умение находить ошибки - важнейшее для программиста. Так что учись ему в первую очередь. А если тебе прямо ткнуть пальцем, пропадёт весь педагогический эффект. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 17:11 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Все верно, но нельзя же вечно над одной проблемой биться, так жизни не хватит это освоить)))) Я думала для этого и есть форумы, чтобы спрашивать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 18:26 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Все верно, но нельзя же вечно над одной проблемой биться Можно. Самые хитрые баги от меня скрывались годами. Тебе же достаточно одного-двух пошаговых проходов. Это не займёт больше одного дня. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 18:29 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Я вот так переписала, но у меня теперь другая ошибка с размером, выход за его пределы. Помогите пожалуйста Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 18:51 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38590741&tid=2019611]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 294ms |
| total: | 439ms |

| 0 / 0 |
