Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2011, 12:34   #1
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
Вопрос Проблема отпраки файла из ListBox1 через FTP

Доброго времени суток! У меня есть маленькая проблема, связанная с отправкой файлов из списка ListBox1. Вкратце отправка файла происходит только в том случае, если файлы из списка находятся вместе с программой. Вопрос: как сделать так чтобы найденные файлы отправлялись через FTP на сервер из того места откуда они были найдены пример: c:\1.txt

Вот кусок кода:
Код:
Var
  i : Integer;
Begin
If Not IdFTP1.Connected Then Begin
  ShowMessage('Нет соединения.');
  Exit;
End;
For i := 0 To ListBox1.Items.Count - 1 Do
  Begin
    ShowMessage('Отправляем фаил ' + ListBox1.Items[i]);
    Try
      IdFTP1.Put(ListBox1.Items[i], ExtractFileName(ListBox1.Items[i]), True);
    Except
      ShowMessage('Отправить фаил ' + ListBox1.Items[i] + ' не удалось.');
    End;
 End;
End;
P.S. Знаю что дело в строчке IdFTP1.Put(ListBox1.Items[i], ExtractFileName(ListBox1.Items[i]), True);


У нас принято оформлять код специальным тегом. Кнопка #.

Модератор

Последний раз редактировалось dr.Chas; 06.08.2011 в 17:49.
Ёжик в тумане вне форума Ответить с цитированием
Старый 02.08.2011, 12:52   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Ну код вроде рабочий, только что проверил, все отправляет...файлы лежат вовсе отдельно от программы...
Может быть в самом ListBox-е неправильные пути к файлам...?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 02.08.2011, 13:07   #3
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
По умолчанию

Цитата:
Сообщение от spamer Посмотреть сообщение
Ну код вроде рабочий, только что проверил, все отправляет...файлы лежат вовсе отдельно от программы...
Может быть в самом ListBox-е неправильные пути к файлам...?
Что значит не правильные пути? Можешь код выложить как у тебя получилось... может я что-то не правильно делаю.
Ёжик в тумане вне форума Ответить с цитированием
Старый 02.08.2011, 13:18   #4
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Цитата:
Сообщение от Ёжик в тумане Посмотреть сообщение
Что значит не правильные пути? Можешь код выложить как у тебя получилось... может я что-то не правильно делаю.
Дык...а что выкладывать, я взял твой код скопировал и проверил...
Вот что-то типа такого было в LB:
Цитата:
D:\test.txt
D:\VM\sss.rar
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 02.08.2011, 13:29   #5
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
По умолчанию

Цитата:
Сообщение от spamer Посмотреть сообщение
Дык...а что выкладывать, я взял твой код скопировал и проверил...
Вот что-то типа такого было в LB:
Э-э нет! Ты не понял... имеются список файлов в ListBox1 (без путей к ним т.е. файлы которые найдены с помощью FindFirst. Ну и соответственно отправить их на сервер. Я как то это дело исправил т.е прога находила и отправляла файлы но забыл сохранить исправленных код(( а сейчас не помню как я исправил это дело ((
Ёжик в тумане вне форума Ответить с цитированием
Старый 02.08.2011, 13:45   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Ну так естественно оно не будет отправлять, путь-то не верный...
Вот так добавляй, должно помочь:
Код:
ListBox1.Items.Add(ExpandFileName(SearchRec.Name));
Но лучше еще делай перестраховку на существование файла:
Код:
FileExists()
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 02.08.2011, 13:49   #7
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
имеются список файлов в ListBox1 (без путей к ним
Ну а раз без путей, то что же ты хочешь от IdFTP ?
Пути ты ему не указал, вот он и не знает откуда брать файлы и по-умолчанию пытается их взять из тек.директории, т.е. той в которой находится исполняемый exe-файл твоего приложения.

И, кстати, если "без путей к ним", то накой ляд тогда ты вызываешь ExtractFileName() ? Чего экстрактить-то, спрашивается ? Путей-то нет)
mss вне форума Ответить с цитированием
Старый 02.08.2011, 14:03   #8
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
По умолчанию

Цитата:
Сообщение от spamer Посмотреть сообщение
Ну так естественно оно не будет отправлять, путь-то не верный...
Вот так добавляй, должно помочь:
Код:
ListBox1.Items.Add(ExpandFileName(SearchRec.Name));
Но лучше еще делай перестраховку на существование файла:
Код:
FileExists()
Имеешь в виду, что нужно заменить (ListBox1.Items[i], ExtractFileName(ListBox1.Items[i]), True); на ListBox1.Items.Add(ExpandFileName(S earchRec.Name));
я так понимаю?
Ёжик в тумане вне форума Ответить с цитированием
Старый 02.08.2011, 14:07   #9
Ёжик в тумане
Подтвердите свой е-майл
 
Регистрация: 20.07.2011
Сообщений: 239
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
Ну а раз без путей, то что же ты хочешь от IdFTP ?
Пути ты ему не указал, вот он и не знает откуда брать файлы и по-умолчанию пытается их взять из тек.директории, т.е. той в которой находится исполняемый exe-файл твоего приложения.

И, кстати, если "без путей к ним", то накой ляд тогда ты вызываешь ExtractFileName() ? Чего экстрактить-то, спрашивается ? Путей-то нет)
Я имею ввиду, что файлы которые найдены нужно их соответственно экстрактить т.е пути... к этим файлам. Как это сделать??? Ну конечно если пути прописать в ListBox то он и отправит.
Ёжик в тумане вне форума Ответить с цитированием
Старый 02.08.2011, 14:18   #10
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Т.е. в листбоксе у тебя всегда фигурирует список файлов из одной директории ?
ну так сохрани полный путь директории где-нибудь в переменной, а в лисбокс добавляй извлеченное имя файла.
А при вызове Put() строй полный путь конкатенацией пути к директориии из переменной и имени файла из листбокса.
mss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка файла на FTP сервер через прокси Игорь С Microsoft Office Access 0 21.07.2010 12:57
Передача и получение файлов через Ftp -=Virus=- Работа с сетью в Delphi 0 11.07.2010 22:05
ftp через сокс5 BESS Общие вопросы Delphi 0 25.08.2008 17:19
Скрипт для отпраки формы на е-mail President JavaScript, Ajax 2 29.03.2008 12:41
соединение с сервером через FTP magpro Работа с сетью в Delphi 6 19.09.2007 13:56