HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #2061  
Старый 22.12.2008, 18:05
NetSter
студент
Регистрация: 30.07.2007
Сообщений: 800
Провел на форуме:
4275992

Репутация: 1188


Unhappy

Ребята, помогите пожалуйста... голова уже забита..
есть функция, которая считывает данные с файла и передает их в эдитбокс.
по дефолту там считывает 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.. а завтра нужно сдать..
кто нить на свежую голову посмотрите что там можно сделать. спасибо, друзья.
 

  #2062  
Старый 22.12.2008, 18:29
ronald
Участник форума
Регистрация: 27.03.2008
Сообщений: 288
Провел на форуме:
800727

Репутация: 83
Отправить сообщение для ronald с помощью ICQ
По умолчанию

под рукой нету компилятора, попробуй подставлять CFile вроде как-то так:
file.Read(&ch, CFile);
ногами не пинать, не уверен на 55 персентов.
(имеется ввиду то, что ты не можеш подставить)

Последний раз редактировалось ronald; 22.12.2008 в 18:33..
 

  #2063  
Старый 22.12.2008, 19:00
NetSter
студент
Регистрация: 30.07.2007
Сообщений: 800
Провел на форуме:
4275992

Репутация: 1188


По умолчанию

не так не катит... вот что я пробовал, получить сразу длину в самой функции считывания.
file.Read(&ch, CFile::GetLength(fDialog.GetPathName()));
но тоже не катит.. хз.. пробую дальше.
кто что подскажет? спс.
 

  #2064  
Старый 22.12.2008, 19:39
_antony
Познающий
Регистрация: 16.07.2008
Сообщений: 82
Провел на форуме:
424387

Репутация: 142
По умолчанию

а чем GetFileSize не устраивает? http://msdn.microsoft.com/en-us/library/aa364955(VS.85).aspx
 

  #2065  
Старый 22.12.2008, 21:16
NetSter
студент
Регистрация: 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.. Причина: решение проблемы.
 

  #2066  
Старый 22.12.2008, 22:14
criz
Постоянный
Регистрация: 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.. Причина: опоздал
 

  #2067  
Старый 24.12.2008, 11:50
Campery
Участник форума
Регистрация: 30.11.2008
Сообщений: 131
Провел на форуме:
8786473

Репутация: 165
Отправить сообщение для Campery с помощью ICQ
По умолчанию

кто может помочь с программой постучите в асю, дело срочное!! для знающего делов на минуту-две, а мне разбираться некогда... о цене там же договоримся... срочно! (icq:295820085)
 

  #2068  
Старый 24.12.2008, 11:57
GuK0s
Познающий
Регистрация: 17.02.2007
Сообщений: 39
Провел на форуме:
316529

Репутация: 23
По умолчанию

Ввести массив строк.Для каждой строки проверить,является ли она симметричной или нет.Вывести на экран саму строку и результата её обработки.

+++ прилогается
 

  #2069  
Старый 24.12.2008, 12:49
ZipaCna
Познающий
Регистрация: 29.02.2008
Сообщений: 66
Провел на форуме:
139469

Репутация: 33
По умолчанию

Цитата:
Сообщение от GuK0s  
Ввести массив строк.Для каждой строки проверить,является ли она симметричной или нет.Вывести на экран саму строку и результата её обработки.

+++ прилогается
В нете есть куча примеров:

Забей в гугле "с++ палиндром" готовых исходников кучарезультатов там куча.

Последний раз редактировалось ZipaCna; 24.12.2008 в 12:56..
 

  #2070  
Старый 24.12.2008, 13:22
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


Отправить сообщение для nerezus с помощью ICQ
По умолчанию

Лазер боре хер обрезал
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ