Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как избежать аварийное завершение проги


Автор: rax 26.1.2005, 19:31
Доброго всем времени суток!
Я написал http://rax.nm.ru/Download/debug.exe (без вирусов, не бойтесь), которая, ищет в инете слова, записанные в вордлисте, и результат записывает в файл отчета.
Однако после некоторого времени работы, она просто завершает свою работу, не выводя никакого сообщения об ошибке smile
В чем может быть дело? Ведь если это прерывание, то должна ыинда должна крикнуть, что ошибка

Автор: _hunter 26.1.2005, 20:13
а толку твой ехе-шник смотреть? ты код давай

Автор: Unknown_Error 26.1.2005, 20:15
А причем здесь прерывание?

А вообще так трудно сказать почему! Желательно бы листинг посмотреть!

Автор: chaos 27.1.2005, 08:24
пробуй перехватывать искл ситуации

Автор: En_t_end 27.1.2005, 08:40
Смотри в системный журнал событий. - хотя...
Мне кажется, что прога просто читает последнее слово в списке - и завершает работу smile
Расставь по проге AfxMessageBox'ов и отлови момент, когда она завершается.
Действительно, причем здесь прерывание ? smile

Автор: rax 27.1.2005, 19:05
Код я дам, просто он у мя дома, а я на работе сейчас smile
Нет, прога ищет в хтмл коде ссылки и продвигается по ним дальше.
По идее это должно идти пока не закончатся ссылки на всех страницах. Однако все заканчивается гораздо раньше

Автор: rax 28.1.2005, 14:51
А вот и он. За корявость не судите
Код

#include <afxwin.h>
#include "afxinet.h"
#include <afxdlgs.h>
#include <iostream.h>

void main() {


CString str;
CString s;
CString dururl="http://www.ru";
CString wrdar[100];
CString durl[1000];

int counter=0;
int curl=0;
int k=0;
int f=1;
int strt=0;
int fnsh=0;
int fnsh1=0;
int mfnsh=0;
unsigned long sz=0;

CInternetSession se("My Session");
CStdioFile* inf = NULL;
CStdioFile roma("log.txt",CFile::modeWrite);

cout<<"Let's GO>>";
cout<<"\n";
try
{
 CStdioFile File("wordlidt.txt",CFile::modeRead);
 

while (File.ReadString(str)) {
 k++;
if (k==1) dururl.operator =(str);
else wrdar[k-1].operator =(str);
cout<<wrdar[k];
}
 
}
catch(...)
{
 cout<<"Error (File open) !";
}
cout<<"URL's....";
cout<<"\n";

while (curl>=counter) {
 counter++;
 if (counter==1) durl[counter]=dururl;
  try {

  inf = se.OpenURL(durl[counter]);
  sz=sz+inf->GetLength();
  for (int i=1; i<=k; i++) {
  while (inf->ReadString(str)) {
   if (str.Find(wrdar[i])>0) {
    roma.WriteString("****"+wrdar[i]+"****\n");
   roma.WriteString((LPCTSTR)str);
roma.WriteString("\n    URL:    ");
roma.WriteString((LPCTSTR)dururl);
roma.WriteString("\n");}
   if (strt=str.Find("<a")>0) {
strt=str.Find("href",strt);
strt=str.Find(CString(34),strt);
fnsh=str.Find(CString(34),strt+1);
dururl=str.Mid(strt+1,fnsh-strt-1);
cout<<dururl;
cout<<"\n";
curl++;
durl[curl]=dururl;
}
  }
  }}
  catch(...) {
   cout<<"error";
cout<<"\n";

  }
}
roma.Close();
inf->Close();
cout<<"\n";
cout<<"Потраченный трафик:....\n";
cout<<sz;
cout<<"\n";
cout<<"Ok, Ready\n";

}


Автор: _hunter 28.1.2005, 16:28
а ты дебагером по коду ходить пробовал? ( щас под рукой только Builder, но дома гляну )
+ есть подозрение что ты где-то ( с поиском ) за пределы массива выходиш

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)