Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Re[2]: Допись в конец файла -> как избавится от лишних пробелов

Спасибо заработало, но появилась ещё одна проблема,
при открытии сохраненного файла появилось много лишних пробелов и
какие-то квадратики перед цифрами

102.237312
76.677986

127.796638

91.725670
68.794258

114.657089

96.282684
72.212013

120.353355

1200
100
1

а надо

102.237312
76.677986
127.796638

91.725670
68.794258
114.657089

96.282684
72.212013
120.353355

1200
100
1

Как избавиться от лишних пробелов и квадратиков, от чего они
появляются ?

Ответить   Sun, 16 May 2004 23:27:50 +0700 (#146479)

 

Ответы:

Тема: Re[2]: Допись в конец файла -> как избавится от лишних пробелов

Лишние пробелы - скорее всего, следы форматирования вывода. Об этом свидетельствует
разная длина чисел после запятой.
ТО ЕСТЬ: приведите пример команды вывода, а лучше весь кусочек вывода.
"Лишние" квадратики - неотображаемые символы - тоже без водки и исходного кода
не разберешься.

Ответить   Mon, 17 May 2004 16:46:25 +0400 (#147029)

 

Здравствуйте, Surin_bp.

кода

Лишние пробелы

void CCE6850EMULDlg::OnTimer(UINT nIDEvent)
{
CDialog::OnTimer(nIDEvent);

{ ////////////////////////////////
................................
................................
................................
////////////////////////////////

CString mPaver,mQReactivPower,mSummPower;

mPaver.Format("%f",Paver);
mQReactivPower.Format("%f",m_QReactivPower);
mSummPower.Format("%f",m_SummPower);

m_Inform.AddString(mPaver);
m_Inform.AddString(mQReactivPower);
m_Inform.AddString(mSummPower);

CFile file("SAVE.TXT", CFile::modeWrite | CFile::modeNoTruncate);
file.SeekToEnd();
CArchive ar(&file, CArchive::store);

ar <<mPaver<<'\n'<<mQReactivPower<<'\n'<<mSummPower<<'\n';
ar <<'\n';

ar.Close();
file.Close();

}

}

"Квадратики"

void CCE6850EMULDlg::OnAdijustSave()
{
CFileDialog DlgSaveAs(FALSE,(LPCSTR)"txt",NULL,
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,(LPCSTR)" Text Files (*.ini) |*.ini||");

if(DlgSaveAs.DoModal()==IDOK)
{
CStdioFile File(DlgSaveAs.GetPathName(),
CFile::modeCreate|CFile::modeWrite|CFile::typeText);

CArchive ar(&File, CArchive::store);

ar <<'\n'<<m_Port<<'\n'<<m_Speed<<'\n';

CString mTimeOut;
mTimeOut.Format("%i", m_TimeOut);
ar <<mTimeOut<<'\n';

//Параметры счетчика
CString mTimeCount, mActivPower;
mTimeCount.Format("%i",m_TimeCount);
ar <<mTimeCount<<'\n';
ar <<m_NameCount<<'\n';
mActivPower.Format("%i",m_ActivePower);
ar <<mActivPower<<'\n';

ar.Close();
File.Close();

}
}

Ответить   Mon, 17 May 2004 23:23:52 +0700 (#147227)

 

Здравствуйте !

Можно попробовать писать не через архив, а напрямую :
File.Write((LPCTSTR) m_QReactivPower, m_QReactivPower.GetLength());

CFile::typeText - просто константа, на вывод не влияющая, ибо :
CFile::typeText Sets text mode with special processing for carriage
return-linefeed
pairs (used in derived classes only).
^^^^^^^^^^^^^^^^^^^^^^^

Еще у CArchive для записи строк есть мембер WriteString.
То есть можно делать :

mTimeCount.Format("%i",m_TimeCount);
ar.WriteString(mTimeCount);
ar.WriteString("\n");

Вот :-)

--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru
Номер выпуска : 3078
Возраст листа : 238 (дней)
Количество подписчиков : 399
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/147351
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Mon, 17 May 2004 22:22:43 +0400 (#147351)

 

Здравствуйте, Victor.

Спасибо. Все заработало.
Лишних пробелов нет, "кубиков" нет.

Ответить   Tue, 18 May 2004 14:49:51 +0700 (#147744)