ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

22.12.2008, 18:05
|
|
студент
Регистрация: 30.07.2007
Сообщений: 800
Провел на форуме: 4275992
Репутация:
1188
|
|
Ребята, помогите пожалуйста... голова уже забита..
есть функция, которая считывает данные с файла и передает их в эдитбокс.
по дефолту там считывает 1024 байта. не больше и не меньше.
как в MFC получить длину файла и считывать такое количество байт, которое нужно, а не строго только 1024..
вот код:
Код:
void COpenDialog::OnOpen()
{
CString fname; //Переменная для хранения имени файла
CFile file; //обьект класса CFile
char ch[1024]; //Буффер для чтения данных из файла
if(!OpenRead) //Если OpenRead=false то показываем диалог открытия файлов
{
CFileDialog fDialog(TRUE);
fDialog.DoModal();
m_EditOpen.SetWindowText(fDialog.GetPathName());
m_bOpen.SetWindowText("Read");
OpenRead = true;
}
else
{
m_EditOpen.GetWindowText(fname); //Получаем имя файла
if(!file.Open(fname, CFile::modeRead, NULL)) //Открываем его
{
AfxMessageBox("Cannot open file");
return;
}
file.Read(&ch, 1024); //Читаем 1024 байт
m_EditText.SetWindowText(ch);
file.Close(); //Закрываем файл
m_bOpen.SetWindowText("Open");//Меняем текст кнопки
OpenRead = false;
}
}
никак не могу вкурить как сюда прилепить CFile::GetLength.. а завтра нужно сдать..
кто нить на свежую голову посмотрите что там можно сделать. спасибо, друзья.
|
|
|

22.12.2008, 18:29
|
|
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
Провел на форуме: 800727
Репутация:
83
|
|
под рукой нету компилятора, попробуй подставлять CFile вроде как-то так:
file.Read(&ch, CFile);
ногами не пинать, не уверен на 55 персентов.
(имеется ввиду то, что ты не можеш подставить)
Последний раз редактировалось ronald; 22.12.2008 в 18:33..
|
|
|

22.12.2008, 19:00
|
|
студент
Регистрация: 30.07.2007
Сообщений: 800
Провел на форуме: 4275992
Репутация:
1188
|
|
не так не катит... вот что я пробовал, получить сразу длину в самой функции считывания.
file.Read(&ch, CFile::GetLength(fDialog.GetPathName()));
но тоже не катит.. хз.. пробую дальше.
кто что подскажет? спс.
|
|
|

22.12.2008, 19:39
|
|
Познающий
Регистрация: 16.07.2008
Сообщений: 82
Провел на форуме: 424387
Репутация:
142
|
|
а чем GetFileSize не устраивает? http://msdn.microsoft.com/en-us/library/aa364955(VS.85).aspx
|
|
|

22.12.2008, 21:16
|
|
студент
Регистрация: 30.07.2007
Сообщений: 800
Провел на форуме: 4275992
Репутация:
1188
|
|
Код:
void COpenDialog::OnOpen()
{
CString fname; //Переменная для хранения имени файла
CFile file; //обьект класса CFile
//char ch[1024]; //Буффер для чтения данных из файла
char ch; //Буффер для чтения данных из файла
CString ch1;
if(!OpenRead) //Если OpenRead=false то показываем диалог открытия файлов
{
CFileDialog fDialog(TRUE);
fDialog.DoModal();
m_EditOpen.SetWindowText(fDialog.GetPathName());
m_bOpen.SetWindowText("Read");
OpenRead = true;
}
else
{
m_EditOpen.GetWindowText(fname); //Получаем имя файла
if(!file.Open(fname, CFile::modeRead, NULL)) //Открываем его
{
AfxMessageBox("Cannot open file");
return;
}
int dlina;
dlina=::GetFileSize(file,0);
file.Read(&ch1, dlina); //Читаем 1024 байт
m_EditText.SetWindowText(ch1);
file.Close(); //Закрываем файл
m_bOpen.SetWindowText("Open");//Меняем текст кнопки
OpenRead = false;
}
}
вот вроде так только при открытии еррор. хз.... не могу понять в чем трабла...
--------------------EDIT---------------------
вот если кому нить понадобится, рабочий код. Большое спасибо 2 groupby за помощь.
Код:
void COpenDialog::OnOpen()
{
CString fname; //Переменная для хранения имени файла
CFile file; //обьект класса CFile
if(!OpenRead) //Если OpenRead=false то показываем диалог открытия файлов
{
CFileDialog fDialog(TRUE);
fDialog.DoModal();
m_EditOpen.SetWindowText(fDialog.GetPathName());
m_bOpen.SetWindowText("Read");
OpenRead = true;
}
else
{
m_EditOpen.GetWindowText(fname); //Получаем имя файла
if(!file.Open(fname, CFile::modeRead, NULL)) //Открываем его
{
AfxMessageBox("Cannot open file");
return;
}
int len = file.GetLength();
char* ch = new char[len];
file.Read(ch, len); //Читаем len байт
m_EditText.SetWindowText(ch);
file.Close(); //Закрываем файл
m_bOpen.SetWindowText("Open");//Меняем текст кнопки
penRead = false;
}
}
--------------------EDIT---------------------
Последний раз редактировалось NetSter; 26.12.2008 в 04:32..
Причина: решение проблемы.
|
|
|

22.12.2008, 22:14
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
Код:
sprintf(buffer1,"%lu",i); // заносим i в buffer1
sprintf(buffer2,"%lu",i*i); // заносим i*i в buffer2
if(strpos = strstr(buffer2, buffer1)) // узнаем место вхождения buffer1 в buffer2, присваевам strpos. Если он не 0, то идем дальше
if((strpos-buffer2) == strlen(buffer2) - strlen(buffer1)) // проверям равенство и если не 0, то идем дальше
вот 
Последний раз редактировалось criz; 22.12.2008 в 22:15..
Причина: опоздал
|
|
|

24.12.2008, 11:50
|
|
Участник форума
Регистрация: 30.11.2008
Сообщений: 131
Провел на форуме: 8786473
Репутация:
165
|
|
кто может помочь с программой постучите в асю, дело срочное!! для знающего делов на минуту-две, а мне разбираться некогда... о цене там же договоримся... срочно! (icq:295820085)
|
|
|

24.12.2008, 11:57
|
|
Познающий
Регистрация: 17.02.2007
Сообщений: 39
Провел на форуме: 316529
Репутация:
23
|
|
Ввести массив строк.Для каждой строки проверить,является ли она симметричной или нет.Вывести на экран саму строку и результата её обработки.
+++ прилогается 
|
|
|

24.12.2008, 12:49
|
|
Познающий
Регистрация: 29.02.2008
Сообщений: 66
Провел на форуме: 139469
Репутация:
33
|
|
Сообщение от GuK0s
Ввести массив строк.Для каждой строки проверить,является ли она симметричной или нет.Вывести на экран саму строку и результата её обработки.
+++ прилогается 
В нете есть куча примеров:
Забей в гугле "с++ палиндром" готовых исходников кучарезультатов там куча.
Последний раз редактировалось ZipaCna; 24.12.2008 в 12:56..
|
|
|

24.12.2008, 13:22
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
Лазер боре хер обрезал
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|