000
26.09.2007, 15:13 Uhr
xXx
Devil
|
C++: |
void foo::add(const wchar_t* string) const { if (string == NULL || m_filename.empty() == true)throw std::invalid_argument("null-pointer | empty filename");
std::wofstream file(m_filename.c_str(), std::ios::out | std::ios::binary | std::ios::app); if (!file) throw std::runtime_error("could not open file"); const std::size_t string_length(::lstrlenW(string) + 1); file.write(reinterpret_cast<const wchar_t*>(&string_length), sizeof(std::size_t)); file.write(string, static_cast<std::streamsize>(string_length * sizeof(wchar_t)));
if (m_pListBox != NULL) m_pListBox->AddString(string); }
|
sollte mir doch eigentlich korrekt sein?! Dann geht aber das lesen nicht
C++: |
void foo::view() const { if (m_filename.empty() == true || m_pListBox == NULL) throw std::invalid_argument("null-pointer | empty filename");
m_pListBox->ResetContent();
std::wifstream file_stream(m_filename.c_str(), std::ios::in | std::ios::binary); if (!file_stream) throw std::runtime_error("could not open file"); for (std::size_t n = 0; file_stream.eof() == false && file_stream.fail() == false; ++n) { std::size_t string_length = 0; file_stream.read(reinterpret_cast<wchar_t*>(&string_length), sizeof(std::size_t)); if (string_length == 0) continue; wchar_t* string = new wchar_t[string_length]; file_stream.read(string, static_cast<std::streamsize>(string_length * sizeof(wchar_t))); if (!file_stream) throw std::bad_exception("invalid file"); m_pListBox->AddString(string); delete [] string; } }
|
ja ok is ne böse Sache wenn man file_stream.eof so nutzt aber das sollte gehen, da ich einfach den Teil überspringen lasse, wenn nichts da steht
WO liegt da der dumme Fehler? Ich ralls nicht |