Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 28.02.2008, 01:30   #1
Horror
Пользователь
 
Регистрация: 02.02.2008
Сообщений: 25
Репутация: 10
По умолчанию Работа с ФТП: Скачка файлов

Всем привет!
ниже прведен фрагмент функции,
который должен скачать те файлы которые
есть на ФТП но нет на локальном компьютере
,но почемуто вылетает)
где я ошибся:
Код:

void DirLocal(CString PathLocal,CString PathFtp)
{	//1)Создать папки на фтп , которые есть на ПС , но нет на ФТП
	//2)Залить файлы с пс на фтп 


	CString AdressFtp=NULL;
	CString NameFtp=NULL;
	CString	PasswordFtp=NULL;

	AdressFtp="127.0.0.1";  //FTP
	NameFtp="horror";   
	PasswordFtp="secret"; 
//интернет-объекты 
   CInternetSession Session; 
   CFtpConnection* Connection = NULL; 
   
	CFileFind *FileLocal;
	CFtpFileFind *FileFtp;
	
   try
   {
         //осуществить соединение с FTP-сервером
         Connection=Session.GetFtpConnection(AdressFtp,NameFtp,PasswordFtp);
         //если соединение не удалось то следующие строки выпосняться не будут
			printf("\nConnection, OK!\n");
         //получить текущий каталог
         Connection->GetCurrentDirectory(AdressFtp);
		 //создать объект для поиска файлов на FTP
	     	FileFtp=new CFtpFileFind(Connection);
    	 //создать объект для поиска файлов на PС
			FileLocal=new CFileFind();
			
   } 
   catch(CInternetException *pe) 
   { 
	     Connection=NULL; 
	     pe->Delete(); 
		 printf("No connection!\n"); Sleep(2000);
		 return; //выход
   } 


	int LenPathLocal = PathLocal.GetLength();
	int LenPathFtp= PathFtp.GetLength();
	
	if (LenPathLocal > 0 && _T('\\') != PathLocal[LenPathLocal - 1] && _T('/')  != PathLocal[LenPathLocal - 1]){PathLocal += _T('\\');} 
	if (LenPathFtp > 0 && _T('\\') != PathFtp[LenPathFtp - 1] && _T('/')  != PathFtp[LenPathFtp - 1]){PathFtp += _T('\\');} 

	PathLocal += _T("*.*");
    PathFtp += _T("*.*");


	BOOL LocalWorking ;
	BOOL FtpWorking=FileFtp->FindFile(PathFtp)  ;
	bool fileExist=false;
	while (FtpWorking )
    {
        FtpWorking = FileFtp->FindNextFile(); 
		LocalWorking = FileLocal->FindFile(PathLocal); 
		
		fileExist=false;
		while(LocalWorking) 
		{	LocalWorking = FileLocal->FindNextFile();

			if (FileLocal->GetFileName()==FileFtp->GetFileName())  
				{  
					if (FileFtp->IsDots()&& FileLocal->IsDots()) continue;
					if (!FileLocal->IsDirectory()&& !FileFtp->IsDirectory())
						{ 
   					   fileExist=true;
				        }
					else
					{
					//переход в подпапку
					}
			
		         }

			if(!fileExist){
				//копируем файл
								CString p4 = FileFtp->GetFilePath(); //();
	CString p3 = FileLocal->GetRoot(); //ПУТИ ТО НЕТ кудае го качать? 
	//2) закачать файл						printf("\t get file, please Wait... %s\n",p3);
								Connection->GetFile(p4, p3, FTP_TRANSFER_TYPE_BINARY, 1);
			}

		}
    FileLocal->Close();
	Connection->Close();


	}
		FileFtp->Close();
}

немного об алгоритмe)
мы перебираем файлы на фтп и на локал
если встретился повторяющий файл то fileExist=ИСТИНА
и далее значит мы файл качать не будет
)
подозреваю что проблема в получение места где будет размещаться скачаный файл, но уж чтото не выходит (
Horror вне форума   Ответить с цитированием
Старый 28.02.2008, 07:33   #2
merax
Участник клуба
 
Регистрация: 27.12.2006
Сообщений: 955
Репутация: 547
По умолчанию

Ты действительно думаешь, что я допустим буду разбиратся в этом коде? Пиши конкретные ошибки. Скрин выложи. Может по типичной ошибке можно найти узкое место в программе. Телепатов тут нет
merax вне форума   Ответить с цитированием
Старый 28.02.2008, 22:25   #3
Horror
Пользователь
 
Регистрация: 02.02.2008
Сообщений: 25
Репутация: 10
По умолчанию

подробнее так:
прогамма выполняеться
потом доходит до
printf("\t get file, please Wait... %s\n",p3);
выводит это(как и должно, но пока ни один файл не закачало):
http://savepic.ru/159230.jpg
а потом сразу это:
http://savepic.ru/157182.jpg
при нажатие на повтор
вылетает в библеотку мфк инет.х

ошибка в алгоритме)
может чтото я напутал

если надо могу скинуть проект!
но смысла нет там вообщемто тока эта функция (
Horror вне форума   Ответить с цитированием
Старый 28.02.2008, 22:31   #4
merax
Участник клуба
 
Регистрация: 27.12.2006
Сообщений: 955
Репутация: 547
По умолчанию

Выкладывай проект тут
merax вне форума   Ответить с цитированием
Старый 03.03.2008, 15:50   #5
Horror
Пользователь
 
Регистрация: 02.02.2008
Сообщений: 25
Репутация: 10
По умолчанию

http://slil.ru/25539444

это проект!
в equlity.cpp нужные функции
DirEqualityLocal(CString PathLocal,CString PathFtp)
-отсылает одинаковые по имени , но разные по содержанию файлы с ПС на ФТП
DirEqualityFtp(CString PathLocal,CString PathFtp)
-скачивает одинаковые по имени , но разные по содержанию файлы с ФТП на ПС
они работают нормально!

я же щас мучаюсь с
DirFtp(CString PathLocal,CString PathFtp)
она должна скачивать те файлы которые есть на фтп
но которых нет на компе!

сейчас я добился того что
те файлы которых нет они качаються,
но как то не так
во первых!
их имена если они были по русски становиться каракулями)
во вторых!
они качаються не в нужную дирректорию а в E:
в третих!
они копируються пустыми)
хз почему, они становяться пустые (
ну и надо доработать чтобы еще она раболтала с под директориями
как первые две функции
но это я наверно сам смогу
просто поправьте пожалуйсто что
у меня в трех пунктах нетак )

а вот еще какой флаг надо ставить у функции которые обмениваються с ФТП
просто те файлы которые качаються
становится "только для чтения"
и не удобно каждоу в ручную свосва менять (
Horror вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь: выбор файлов исходя из имени файлов Antik163RUS Помощь студентам 4 19.06.2008 21:20
C++ Builder Работа со строками файлов Ya_Nika C++ Builder 2 08.03.2008 03:47
Работа с file(). Расширения файлов Gribushkino PHP 2 12.02.2008 16:15
Проверка размера файлов на стороне клиента (работа) AndreyAndrey Фриланс 5 02.11.2007 20:13


15:31.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru