как скопировать данные по FTP

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

как скопировать данные по FTP

Сообщение artist7 » 19.10.2005 (Ср) 10:01

Такая проблема
Есть программа по которой я связываюсь с др. компом по ftp.
Три окна: Ip , Login, Password. Заполнил – логинюсь – в четвертом окне вижу необходимые мне данные, выглядят так:
-rwxrwxrwx 1 abc cde 1000018 Sep 30 08:15 log0.csv
-rwxrwxrwx 1 abc cde 181273 Sep 30 09:15 log1.csv
Создаю Баттон для копирования этих данных
Теперь мне нужно эти данные скопировать к себе, допустим на С:
Как дальше, подскажите пожалуйста ?

Код:
Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
Dim ls As Indy.Sockets.TIdStringListFCL = New Indy.Sockets.TIdStringListFCL
FTPConnection = New Indy.Sockets.FTP
Me.FTPConnection.Host = Me.txtFTPAddress.Text
Me.FTPConnection.Username = Me.txtUserName.Text
Me.FTPConnection.Password = Me.txtPassword.Text
Me.FTPConnection.Port = 21
Me.FTPConnection.Passive = True

Try
Me.FTPConnection.Connect()
Me.FTPConnection.List(ls, "./Data/*.csv", True)

For Each file As String In ls
Me.lstServerDirectoryData.Items.Add(file)
Next

Catch ex As Exception
StatusBar1.Text = ex.Message
Exit Sub
End Try

End Sub

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 19.10.2005 (Ср) 10:28

Может, проще воспользоваться готовым компонентом?
http://www.gotdotnet.com/Community/User ... B987947C20
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 19.10.2005 (Ср) 10:46

А, наконец-то поняла. Ты пользуешься готовым компонентом Indy (http://www.indyproject.org). Тогда какую ты версию используешь? Там на сайте и документация какая-то есть. Читал?

Демки какие-то лежат. Если честно, не очень хочется лезть их изучать
http://www.indyproject.org/Sockets/Demos/index.en.iwp

Не знаю, много ли найдется здесь знатоков именно этого компонента...
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 19.10.2005 (Ср) 11:07

v1.1.4322 если ты про Indy
Док. не читал, с английским туго : ))

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 19.10.2005 (Ср) 11:53

1.1? А ам уже лежат 9, 10 - это нормально?
Примеры есть в документации?
примеры - samples, demo, example
Поищи там Download file, Get file

Тебе принципиально Indy использовать?
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 19.10.2005 (Ср) 12:06

Посмотрела какой-то пример использования TIdFTP - не знаю, кто это, и его ли ты используешь.

У него есть методы ChageDir - это чтобы установить текущую директорию
Для того, чтобы скачать файл: метод Get
Параметры - проверь, но скорее всего это
1) Имя файла, который надо скачать
2) имя файла, которое ты хочешь видеть у себя
3) какой-то булевский параметр - может быть, удалять у тебя такой файл, если найдет или нет
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 19.10.2005 (Ср) 12:29

я абсолютный новичок, так что не удивляйся.

Не знаю что мне принципиально использовать.

Я логинюсь через модем не удаленный компьютер, и должен забрать имеющиеся там данные по ftp.

Имею на руках два VB .NET проекта (которые не я писал).
Один со всеми нужными функциями , но не работает, виснет без ошибки, когда я пытаюсь соединение установить.
Второй устанавливает соединение , показывает данные, теперь остается их забрать, что мне собственно и не понятно.

В любом случае спасибо за инфу, буду пытаться через GET

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 19.10.2005 (Ср) 12:46

Пиши и если получится, и если не получится.

Если не получится, сразу вопросы:
1) есть ли метод Get у того объекта, который ты используешь
2) Какие параметры он принимает
3) если найдешь его в документации, не стесняйся сюда запостить описание - переведем
4) если выдает ошибку - тоже полный текст ошибки и номер сюда. А также код, который вызывает эту ошибку.

Хорошо?
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 19.10.2005 (Ср) 15:59

Пытаюсь адоприровать свой некогда работающий проект к другому, тому, который дает соединение и показывает файлы.

Для этого беру часть кода из старого (еде происходит Dowload) и пытаюсь адоприровать в новый.
Код выглядит приметно так:

(русские слова в коде я вставил только здесь, для большей понятливости)

Private Sub btnскачать_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnскачать.Click
Dim данныеспутём As String = Me.путь& Me.выбранныеданныенаFTPServer

If Me.FTPConnection.Connected Then

данныеспутём = данныеспутём .Substring(0, данныеспутём .Length - 4)
данныеспутём += "_" & DateTime.Now.ToString("yyMMdd") & "_" & DateTime.Now.ToString("hhmmss") & ".csv"

Me.FTPConnection.FtpGetFile(Me.выбранныеданныенаFTPServer, _
данныеспутём , _
Me.выбранныеданныенаFTPServer.Length)

MsgBox("Dowload complete")
Else
MsgBox("нет соединения с FTP - Server ")
End If

End Sub


ошибка:
"FtpGetFile" не является элементом "Indy.Sockets.FTP"
ковыряюсь в Get , но чем заменить не знаю?

я тут статью нешел по теме http://www.winsov.ru/vb002.php
но опять же ... не с моим уровнем ...
и подумал, может FtpGetFile объявить снечала надо как функцию?

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 19.10.2005 (Ср) 16:18

Ох... Попытаюсь объяснить.
Есть много способов скачать файл с FTP. Но они ОТДЕЛЬНЫЕ. Их нельзя комбинировать.
1) Использовать Indy и его функции. У тебя уже есть код, который открывает соединение. Надо понять, как заставить его скачать данные. Что не получилось с Get? Такой метод есть? Параметры какие? Что говорит, когда пытаешься вызвать.
2) Написать собственный компонент, основываясь на API-функциях InternetOpen, FtpGetFile и т.д. Это наименее предпочтительный для тебя вариант. Насколько я понимаю, этот подход был использован в первом проекте, который виснет при коннекте.
3) Использовать уже готовый класс, который будет легко использовать. Например, как я уже указывала раньше
http://www.gotdotnet.com/Community/User ... B987947C20
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 19.10.2005 (Ср) 17:45

Заменяю FtpGetFile на Get
второй параметр ("данныеспутём" см.выше) дает ошибку:
Значение типа "String" не может быть конвертировано к "Indy.Sockets.TIdNetStream"

Твой пример по ссылке я скачал, но мой первый проект был тоже написан уже с готового класса... только наверное Специалистами вроде меня : ))
так что он не работает : )))

Для меня лезть сейчас в новый незнакомый класс - сродни катастрофы.

Медленно начинаю чувствовать себя игроком шестой лиги, который лезет играть в высшую

Я все таки лучше помучаю свой полуработающий проект

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 19.10.2005 (Ср) 17:59

artist7 писал(а):Твой пример по ссылке я скачал, но мой первый проект был тоже написан уже с готового класса... только наверное Специалистами вроде меня : ))
так что он не работает : ))) Для меня лезть сейчас в новый незнакомый класс - сродни катастрофы.

Лезть в него не надо. Его надо использовать.
1) присоединяешь clsFTP.vb к своему проекту
2) там в этом классе, в самом низу есть " *** Example Code *** ". Это пример использования.
3) в совй обработчик (Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click )
вставляешь вызов TestFTP()
4) копируешь пример (TestFTP) в код этой формы (рядом с обработчиком Login_Click), раскомментариваешь нужные строчки и подставляешь свои данные.


artist7 писал(а):Я все таки лучше помучаю свой полуработающий проект

Это тоже можно, но я никак не пойму, что же этому Get надо.
Скажи, плз, что всплывает в подсказке, когда ты пишешь FTPConnection.Get? Ккие параметры он хочет?
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 19.10.2005 (Ср) 18:07

спасибо за помощь, но мне домой срочно, а компа там нет, вернее сказать неподходящий.
Так что, если ты и завтра так любезен будешь ... продолжим

Еще раз спасибо

Создатель
Постоялец
Постоялец
 
Сообщения: 422
Зарегистрирован: 21.04.2004 (Ср) 3:32
Откуда: Новосибирск

Сообщение Создатель » 19.10.2005 (Ср) 19:16

Короче, есть рабочий класс, писался специально для скачивания файла по ftp (больше там ничего и нет). Если надо выкину. Для того, чтобы его встроить, придется прописать всего пару строчек.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 19.10.2005 (Ср) 21:38

Public Sub DownloadFile(ByVal address As System.Uri, ByVal destinationFileName As String)
Member of: Microsoft.VisualBasic.Devices.Network
Summary:
Downloads the specified remote file and saves it in the specified location.

Parameters:
address: String. Path of the file to download, including file name and host address. Required.
destinationFileName: String. File name and path of the downloaded file. Required.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 20.10.2005 (Чт) 11:02

[quote="Rainbow"]
3) в совй обработчик (Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click )
вставляешь вызов TestFTP()


ваставляю
Protected Sub TestFTP()
, а он мне ... оператор внутри оператора

и еще там в мнструкции примера сказано , что два dll подключить надо.
FTP.dll я нашел, а вот второй не знаю

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 20.10.2005 (Чт) 11:56

artist7, ты вообще хоть раз писал какую-нибудь программу?
Вызов функции - это просто имя и параметры.
В нашем случае у TestFTP нет параметров. То есть надо просто написать TestFTP и все.

Про вторую dll ничего не знаю. У меня проект компилился.

На dll надо ссылаться, если ты будешь использовать не класс, а dll. Поскольку ты добавил в свой проект clsFTP (если добавил), то на dll не надо ссылки.

Создатель, было бы классно, но для artist7, как я сейчас поняла, нужен код, который он бы просто скопировал и у него заработало. Если у тебя есть время и большое желание, можешь попробовать помочь. Просто у меня сейчас появилась срочная работа - я не смогу.

Sebas, Devices - это же для КПК всяких... Я ошибаюсь?
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 20.10.2005 (Чт) 12:51

Rainbow
Fw 2.0
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 20.10.2005 (Чт) 16:11

Так может кто нибудь все таки объяснит, как дальше?

Скачал я этот класс
создал там форму
на ней 2 кнопки - login и Donowload

Reinbow писал:
3) в совй обработчик (Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click )
вставляешь вызов TestFTP()

... вставляю, уж и со скобками и без и с Protected Sub и как угодно ...все время ошибка
не знаю, как его вызвать, подскажите

Reinbow писал:
4) копируешь пример (TestFTP) в код этой формы (рядом с обработчиком Login_Click), раскомментариваешь нужные строчки и подставляешь свои данные.

рядом - это где? справа или слева :))

я могу вставить его до (Private Sub btnLogin_Click ..., после него или в нем саом (между Private Sub btnLogin_Click ... и ... end sub)

со вставкой примера более менее ясно

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 20.10.2005 (Чт) 17:56

так. Давай по шагам:
Проверяем, что ты можешь законнектиться.
Под строчкой "Inherits System.Windows.Forms.Form" пиши:
Код: Выделить всё
Private ftp As clsFTP

Дальше добавь обработчик своей кнопки login (у меня она btnLogin)
Код: Выделить всё
    Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
        ftp = New clsFTP
        ftp.RemoteHost = txtFTPAddress.Text
        ftp.RemoteUser = txtUserName.Text
        ftp.RemotePassword = txtPassword.Text
        ftp.RemotePort = 21
        If ftp.Login() Then
            MsgBox("Login Successful!")
        End If
    End Sub

Получилось? Увидел сообщение?

вместо всех txtUserName и т.д. можно сразу строчку вставить с нужным адресом (паролем или пользователем):
Код: Выделить всё
ftp.RemoteHost = "localhost"
ftp.RemoteUser = "my_user"
ftp.RemotePassword = "my_secure_password"


Теперь проверяем скачивание файлов:
Добавь обработчик своей кнопки download (у меня она btnDownload)
Код: Выделить всё
    Private Sub btnDownload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDownload.Click
        ftp.ChangeDirectory("Data")
        ftp.DownloadFile("myfile.csv", "C:\TEMP\myfile.csv")
end sub

myfile.csv и C:\TEMP\myfile.csv замени на реальные!
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 21.10.2005 (Пт) 10:37

Все слелал, как ты сказал

Но есть 2 вопроса:

надо ли подключать FTP.dll?
Я и так т так пробовал.
Подключаю - не распознается класс Private ftp As clsFTP

Без подключения FTP.dll - при окмиляции появляется системная ошибка такого содержания:
Проект типа «Class Library» не может стартовать.
Чтобы стартовать Проект кликните закладку Debugg «Настроек конфигурации» в свойствах проекта и установите флажок «стартовать внешней (дополнительной) программой» или «как URL стартовать». Вы так же можете проект, непринадлкжащий типу «Library», добавить к папке проекта, если будет использована ссылка на этот проект ,проект будет использоваться как стартовый.
(перевел немного костноязычно)

Делаю, как сказано:
- «стартовать внешней (дополнительной) программой» или «как URL стартовать»
- поиск - попадаю в \Programm\Microsoft Visual Studio .NET 2003\Common7\IDE
А дальше?
В любом случае, проект не компилится, может что в настройках не так, или библиотеку какую не подключил?

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 21.10.2005 (Пт) 10:40

"...появляется системная ошибка"

не системная ошибка, крнечно, а ошибка VS

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 21.10.2005 (Пт) 11:13

Ты какой проект открываешь?
Тот проект, где находится clsFTP - это проект типа Class Library - из него dll получается.
Тебе надо либо начать новый проект, либо использовать свой старый. В любом случае, это должен быть проект Window Application - из таких проектов получаются exe. Только такие проекты можно "запускать"

У тебя же был проект с формой. Где он?

Теперь про подключение dll. Есть 2 варианта.
1) ты открываешь свой Windows Application, добавляешь ссылку на FTP.dll
2) В открытый Windows Application проект добавляешь класс из того проекта (Add->Add Existing Item->clsFTP.vb).

Это 2 совершенно равноправных варианта. Я тебе описывала по второму. Делай так, как сам хочешь.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 21.10.2005 (Пт) 11:21

бл ...
понял по моему...
я ведь в этом проекте сижу а не в новом, щас попробую ...

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 21.10.2005 (Пт) 11:46

Йййййййййййййййййййййййййееееееееееееессссссссссссссссссссс

Нижайший поклон тебе от меня!!!!!!!!!!!!!

И "Орден за терпение" второй степени !!!!!!!!!!!!!!

Предстоит еще куча работы (для меня),

Ведь это только один из 4х компонентов программы. Остальные уже готовы и работают как отдельные проекты. И все это надо будет собрать вместе.

В любом, случай ещ раз ОГРОМНОЕ СПАСИБО

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 21.10.2005 (Пт) 12:18

Эээээ! Погоди! У тебя же не один файл, а несколько csv-файлов, которые все надо скачать. Не будешь же ты их по одному скачивать - это неправильно!

Вместо того одного DownloadFile напиши вот такую штуку:
Код: Выделить всё
Dim s As String
For Each s In ftp.GetFileList("*.csv")
      If s.Length > 0 Then
           ftp.DownloadFile(s, "C:\TEMP\" & s)
      End If
Next


Здесь GetFileList по переданной маске возвращает массив имен файлов, которые он нашел в текущем каталоге (который был выставлен в ChangeDirectory. "For each s in " перебирает по одному эти файлы и кладет в переменную s. Потом DownloadFile скачивает s. Вот.

А еще, судя по твоим вопросам, тебе неплохо бы почитать что-нибудь по програмированию для начинающих. А то ведь пропадешь совсем. Наука несложная, но код надо понимать хотя бы!
Загляни еще сюда http://www.vbstreets.ru/Articles/66053.aspx
Может, что-нибудь поймешь. Тоже статейка для тебя не бесполезная.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 21.10.2005 (Пт) 13:24

написал:

...
ftp.ChangeDirectory("Data")
Dim s As String
For Each s In ftp.GetFileList("*.csv")
If s.Length > 0 Then
ftp.DownloadFile(s, "С:\TEMP\" & s)
End If
Next
...

выдает ошибку и бросает меня код класса clsFTP на место

If (Not (m_iRetValue = 150 Or m_iRetValue = 125)) Then
MessageString = m_sReply
Throw New IOException(m_sReply.Substring(4))
End If (жетрая стрелка на строчке 362)

Do While (True)
m_aBuffer.Clear(m_aBuffer, 0, m_aBuffer.Length)
m_iBytes = cSocket.Receive(m_aBuffer, m_aBuffer.Length, 0)
output.Write(m_aBuffer, 0, m_iBytes)

-сделал остановку программы в этом месте:
If s.Length > 0 Then
-дальше пошагово
-программа переходит в следующую строчку (ftp.DownloadFile(s, "С:\TEMP\" & s))

-значение "s" везде "total"
-следующим шагом перепрыгивает в код класса clsFTP и начинает там лопатить
-останавливается на строчке End If (362) класса clsFTP

может быть "Catch ex As Exception" попробовать ?

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 21.10.2005 (Пт) 14:01

1) Какой текст ошибки?
2) есть ли у тебя папка c:\temp? Когда у тебя один файл нормально скачался, ты его куда складывал? Что было написано вместо моего
ftp.DownloadFile("myfile.csv", "C:\TEMP\myfile.csv")
3) во время остановки s = "total"? Не "total.csv"?

Попробуй так:
После ChangeDirectory напиши
Код: Выделить всё
Dim arr() As String
arr = ftp.GetFileList("*.csv")


Остановись на следующей строчке и кинь переменную arr в Watch. Посмотри, сколько и какие элементы в массиве.
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

artist7
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 19.10.2005 (Ср) 9:53

Сообщение artist7 » 21.10.2005 (Пт) 15:03

1), 2), " - там везде порядок

3) именно total, этот файл (без расширения и 0Kb) лжит у меня в папке C:\TEMP

Про Watch
в хелпе только Watcher (сейчас ковыряю его)
У меня 3 книги по VB .NET 2003 в PDF, просмотрел их всех на "Watch" и ничего не нашел

Ошибка:
Необрабатываемая ошибка извлечения типа ’System.IO.IOExeption’ возникла в этом проекте
Дополнительная информация: Fole „total“ not found or premission problem

Я вот тут еще слыхал про Таймаут 30 сек по FTP
И если учесть что я скачиваю 700 Кб по модему ... может сдесь проблема?

Rainbow
Человек-радуга
Человек-радуга
 
Сообщения: 543
Зарегистрирован: 13.05.2003 (Вт) 14:16

Сообщение Rainbow » 21.10.2005 (Пт) 15:25

Watcher и Watch скорее всего одно и то же.
Когда остановишься, открой либо Debug->Windows-Watch, либо Debug->Windows->Locals (окошко, дге показывают значения всех локальных переменных)

То, что файл total есть в C:\temp - неудивительно. Он туда скачался. А на ftp он есть? Почему говорит "not found"

По поводу закачки по модему - не знаю, но сомневаюсь, что есть таймаут.
Вообще, все это странно. Я проверяю у себя на локальном ftp - работает, скачивает все txt-файлы, которые у меня там есть.

Сколько у тебя этих csv-файлов?
Учиться - значит открывать для себя то, что уже знаешь. <...> Учить - значит напоминать другим о том, что они знают это также хорошо, как и ты. <...> Лучше всего ты учишь тому, чему тебе самому больше всего надо научиться. (Р. Бах)

След.

Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

    TopList