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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2009, 20:00   #1
spoool
Пользователь
 
Аватар для spoool
 
Регистрация: 01.12.2008
Сообщений: 10
По умолчанию FTP, аутентификация, событие onCommand

добрый день всем, вообщем я переписал весь код который был из под коносли Ftp - сервера, тоесть сделал его вместо консольного , оконным...вообщем сталкнулся с проблемой, код запускаеться, тока аунтификация не проходит , помогите люди добрые плиз!
весь код засунуть не удалось, исходник моего кода во втором архиве, вообщем Oncommand:=idFTPServer1CommandXCRC; вылазеет ошибка, и пожайлуста проверьте правильно ли я сделал мне просто работу сдавать в институте.

Код:
procedure TForm1.IdFTPServerAfterCommandHandler(ASender: TIdTCPServer;
  AThread: TIdPeerThread);
begin
  with IdFTPServer.CommandHandlers.add do
  begin
   Command:='XCRC';
  OnCommand:=IdFTPServer1CommandXCRC;   <-    вот сдесь ошибка
end;
end;
end.
----------------------------------------------------------------------
вообщем все былобы нормал если не одно но
куда вставить эту команду OnCommand:=IdFTPServer1CommandXCRC; она должа быть вмести вот с этим блоком кода:
-----------------------------------------------------------------------
Код:
with IdFTPServer.CommandHandlers.add do
  begin
   Command:='XCRC';
   OnCommand:=IdFTPServer1CommandXCRC;
  end;
 IdFTPServer.Active:=true;
end;
вставляю её в свой код вылазеет ошибка помогите пожайлуста мне.
заранее спс.
Полный исходник консольного ftp в дополнение смори к посту.
Вложения
Тип файла: rar FTPServer_console.rar (3.7 Кб, 21 просмотров)
Тип файла: rar Project2.rar (13.6 Кб, 21 просмотров)

Последний раз редактировалось rpy3uH; 14.04.2009 в 20:13.
spoool вне форума Ответить с цитированием
Старый 14.04.2009, 21:37   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

а ошибка- то какая ?

Думаю что хорошим подспорьем будет пример от Indy
http://www.indyproject.org/DemoDownl..._FTPServer.zip
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи

Последний раз редактировалось Квэнди; 14.04.2009 в 21:40.
Квэнди вне форума Ответить с цитированием
Старый 14.04.2009, 21:52   #3
spoool
Пользователь
 
Аватар для spoool
 
Регистрация: 01.12.2008
Сообщений: 10
По умолчанию

Квэнди тот пример который ты скинул у меня кокораз есть так вот там вылазеет окно терминала, а я переписал код (консольный) чтобы вместо окна терминала была обычная форма при запуске, так вот в последнеей процедуре
procedure TForm1.IdFTPServerAfterCommandHandl er(ASender: TIdTCPServer;
AThread: TIdPeerThread);
begin
with IdFTPServer.CommandHandlers.add do
begin
Command:='XCRC';
OnCommand:=IdFTPServer1CommandXCRC; <- вот сдесь ошибка
end;
end;
end.
видишь где ошибка oncommand посмотри плиз мой исходник, м.б че не так сделал просто мучает этот вопрос...method pointer and regular procedur название ошибки
spoool вне форума Ответить с цитированием
Старый 14.04.2009, 22:30   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Ты пытаешься присвоить методу класса регулярную процедуру. Работать так не будет.
Пропиши заголовок процедуры IdFTPServer1CommandXCRC в класс формы, в секцию private например.
т.е. выглядеть должно примерно так:
Код:
    procedure IdFTPServerAfterCommandHandler(ASender: TIdTCPServer;
      AThread: TIdPeerThread);
  private
    { Private declarations }
   procedure IdFTPServer1CommandXCRC(ASender: TIdCommand);
.........................
procedure TForm1.FormCreate(Sender: TObject);
begin
IdFTPServer:=tIdFTPServer.create(nil);
 IdFTPServer.DefaultPort:=21;
 IdFTPServer.AllowAnonymousLogin:=false;
 IdFTPServer.EmulateSystem:=ftpsUNIX;
 IdFTPServer.HelpReply.text:='Help is not implemented';
 IdFTPServer.Greeting.NumericCode:=220;
 IdFTPServer.Active:=true;
end;
procedure TForm1.IdFTPServer1CommandXCRC(ASender: TIdCommand);
// note, this is made up, and not defined in any rfc
var
 s: string;
begin
 with TIdFTPServerThread(ASender.Thread) do
  begin
   if Authenticated
   then
    begin
     try
      s:=ProcessPath(CurrentDir, ASender.UnparsedParams);
      s:=TransLatePath(s, TIdFTPServerThread(ASender.Thread).HomeDir);
      ASender.Reply.SetReply(213, CalculateCRC(s));
     except
      ASender.Reply.SetReply(500, 'File Error!');
     end;
    end;
  end;
end;
........
procedure TForm1.IdFTPServerAfterCommandHandler(ASender: TIdTCPServer;
  AThread: TIdPeerThread);
begin
  with IdFTPServer.CommandHandlers.add do
  begin
   Command:='XCRC';
   oncommand:=IdFTPServer1CommandXCRC;
end;
end;
end.
Проверить точно не смогу, так как большая разница в последней версии IdFTPServer-а.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 14.04.2009, 23:48   #5
spoool
Пользователь
 
Аватар для spoool
 
Регистрация: 01.12.2008
Сообщений: 10
По умолчанию

про то что я сказал что у меня есть исходник фтп-сервера который ты скинул, я имел ввиду, что у меня есть иходник тока 9 версии , вот я его и переделываю, вообщем ты скинул мой код который я переделал, в точности, обратно, кроме добавления (privat'a)...
если прописать вот это
{ Private declarations }
procedure IdFTPServer1CommandXCRC(ASender: TIdCommand);
то вылезеет ошипка
unsatisfied forvard or external declaration:'Tform1.idftpserver1com mandXCRC';
все бы работало если найти куда запихнуть эту команду!
oncommand:=IdFTPServer1CommandXCRC;
spoool вне форума Ответить с цитированием
Старый 15.04.2009, 08:27   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
unsatisfied forvard or external declaration:'Tform1.idftpserver1com mandXCRC';
значит в коде ты написал не правильно заголовок процедуры.
Видимо ты написал в самом модуле
procedure IdFTPServerAfterCommandHandler(ASen der: TIdTCPServer;, а надо
procedure TForm1.IdFTPServerAfterCommandHandler(ASen der: TIdTCPServer;
т.е. в private- секции должно быть
procedure IdFTPServerAfterCommandHandler(ASen der: TIdTCPServer;
а в самом модуле, где пишется реализация процедуры,
procedure TForm1.IdFTPServerAfterCommandHandler(ASen der: TIdTCPServer;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 15.04.2009, 10:28   #7
spoool
Пользователь
 
Аватар для spoool
 
Регистрация: 01.12.2008
Сообщений: 10
По умолчанию

По поводу твоего исходника у меня пишит ошибка не найден файл DCU. скинь плиз исходник и клиента и сервера, вообщем что ты говорил не какого толку менял , все переставлял так еще больше ошибок вылазеет.)))
spoool вне форума Ответить с цитированием
Старый 15.04.2009, 10:36   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

У тебя стоит 10-я версия ? если да, то то, что ты пишешь на ней работать не будет. По той ссылке, что я тебе скидывал рабочий пример (не консольный ) FTP Сервера для 10-й версии Indy.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 15.04.2009, 13:18   #9
spoool
Пользователь
 
Аватар для spoool
 
Регистрация: 01.12.2008
Сообщений: 10
По умолчанию

вообщем у меня borland delphi 7 а где можно скачать компоненты просто открываю твой исходник у меня вылазеет сообщение и три кноки ignore cancel ignore all Так вот нажимаю cancel потом запускаю проект пишит dcu file не найден от проекта типа, вот такие пироги...
spoool вне форума Ответить с цитированием
Старый 15.04.2009, 13:37   #10
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Описывал в блоге
http://kvendi.pp.ru/?p=66
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Событие vitamin.rulez Помощь студентам 7 10.02.2009 11:46
Событие terminadoor Общие вопросы Delphi 13 17.07.2008 09:25
FTP prizrak1390 Работа с сетью в Delphi 13 13.05.2008 22:52
FTP MAcK Работа с сетью в Delphi 1 19.12.2007 15:51
FTP Димарик Работа с сетью в Delphi 2 27.06.2007 16:24