|
|
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#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:41 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, надо как бы тоже объявление SmartStructBuffer ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:29:23 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#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:52 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#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:48 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Не работает вот эта часть assert(sb[i] == sb2[i]); Помогите пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:37:33 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, Так убери assert, будет работать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:52:01 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Натренировал свой хрустальный шар. Даже можно сказать, хрустальные шары, если вы понимаете юмор. Ошибка тут. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 12:57:28 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Хорошо, а конкретно как это исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:16:58 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, sizeof правильный поставь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:30:48 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
какой может быть правильный если мне надо записать размер буфера туда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:47:16 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Причина я думаю в bool SmartStructBuffer::ReadFromFile(const char* &filename) там надо правильно считать обьект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:48:45 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Причина я думаю в bool SmartStructBuffer::ReadFromFile(const char* &filename) там надо правильно считать обьект Да, и там тоже размер неправильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:52:03 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, Всё, топик можно закрывать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 14:52:58 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
нет, я не могу разобраться как же будет правильно, помогите пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:13:18 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
и дело не в размере, а в том что содержание обьектов не соответствует. как это исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:15:06 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988как это исправить? Сначала проверь правильно ли оно записывается в файл. Если неправильно - отлаживай процедуру записи по шагам, проверяя все значения пока не найдёшь место, где то, что ты о ней воображаешь, начинает расходиться с реальностью. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:28:14 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, а как именно можно проверить правильно ли в файле записано. Ведь при открытии в файле ничего не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:32:57 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Что нужно дописать в функции bool SmartStructBuffer::ReadFromFile(const char* &filename) чтобы второй обьект был равным первому по содержанию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 15:48:16 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Спасибо за ответ, а как именно можно проверить правильно ли в файле записано. Ведь при открытии в файле ничего не видно. less hexdump ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 16:31:57 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Никто не может найти ошибку и помочь? Задание как мне сказали несложное, я только учусь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 16:58:20 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988при открытии в файле ничего не видно. Открывай HEX-редактором. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 17:05:05 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Никто не может найти ошибку и помочь? Задание как мне сказали несложное, я только учусь Умение находить ошибки - важнейшее для программиста. Так что учись ему в первую очередь. А если тебе прямо ткнуть пальцем, пропадёт весь педагогический эффект. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 17:11:13 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Все верно, но нельзя же вечно над одной проблемой биться, так жизни не хватит это освоить)))) Я думала для этого и есть форумы, чтобы спрашивать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 18:26:20 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Все верно, но нельзя же вечно над одной проблемой биться Можно. Самые хитрые баги от меня скрывались годами. Тебе же достаточно одного-двух пошаговых проходов. Это не займёт больше одного дня. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 18:29: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. 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:45 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Выведи на экран значение sizeof(m_buff) и беги в аптеку. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 18:53:38 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Значение sizeof(m_buff) есть 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 19:09:23 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Неужели никто не может испарить ошибку? Пожалуйста помогите найти, я подозреваю что ошибка несложная. Я бьюсь над проблемой не первый день ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 19:50:08 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Значение sizeof(m_buff) есть 4. Вот это и есть "несложная ошибка". Не стоило копипастить с первого нагугленного кода. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 19:54:20 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Код написала сама, так что гугл тут непричем. Можете написать как же все таки правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 20:25:53 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988Код написала сам "Не верю!" (с) Докажи! Скажи, что по-твоему должна делать строчка "myFile.write((char*)&m_buff, sizeof(m_buff))", зачем в ней приведение типа и значение третьего параметра. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 20:29:12 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
к сожалению не смогу хорошо обьяснить, так как с++ я учу около месяца (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 20:36:11 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988не смогу хорошо обьяснить, так как с++ я учу около месяца (( А при чём тут С++? Это же простая логика "цель-средство". Раз ты написала эту строчку, значит чего-то хотела ею добиться и имела идею, что именно эта строчка сможет сделать желаемое. Так что не мочь объяснить чего ты хотела добиться ты можешь только в одном случае: эту строчку написал кто-то другой. Для исправления ошибки достаточно найти противоречие между тем, что эта строчка должна делать и тем, что она делает на самом деле. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 20:43:16 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Я думаю, что топик можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2014, 23:16:22 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Спасибо за Ваши советы, к сожалению мне кажется что программисты забывают как они сами начинали учить, и то что им кажется легким для других таким не является. Я думала форум для того чтобы спросить и получить ответ, тем более что если тут опытные люди им это не составит труда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2014, 10:29:18 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, Ты спросил, получил четкий ответ вплоть до строчки, где ошибка, и даже в чем она заключается. Далее ключевое слово — учиться! А ты это не делаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2014, 10:31:52 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
Занимаюсь каждый день, на форум обратилась потому что стала в тупик, в какой функции ошибка я до этого знала сделав дебаг, не могу сообразить как ее исправить. Ну ладно, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2014, 10:41:44 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988не могу сообразить как ее исправить. Для начала - точно сформулировать на русском языке ЧТО ИМЕННО эта строчка должна делать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2014, 14:06:07 |
|
||
|
Чтение с бинарного файла
|
|||
|---|---|---|---|
|
#18+
chicito1988, формат форума предполагает обсуждение выполненной работы, вынесение автором на обсуждение проблемы, обсуждение вариантов решения, рассмотрение и разбор совершенных действий и ошибок. С Вашей стороны я вижу только тупое нытьё "Ах, я нихрена не понимаю, тыкните меня носом и расскажите как сделать". Это получается не форум, а паперть, куда собственно, я Вам и советую пойти и навсегда забыть о программировании, дабы не занимать вакансию и не отбирать чужой хлеб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2014, 14:17:20 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2019611]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 482ms |

| 0 / 0 |
