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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2014, 01:20   #1
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию Директории в FTP

Написал ftp сервер, как сделать чтобы он давал можно было открывать все логические диски, т.е. у меня получается так что он дает право ходить по одной например C:\ а надо чтобы и на D:\ разрешал заходить и на остальные.
HTTqp вне форума Ответить с цитированием
Старый 16.01.2014, 10:01   #2
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Э-э-э-э-э. Что Вы написали? Сами хоть понимаете?
FaTaL вне форума Ответить с цитированием
Старый 16.01.2014, 10:51   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
HTTqp
А можно код увидеть?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.01.2014, 01:31   #4
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

ИСХОДНИК

вобщем AppDir это дериктория к которой имеет доступ пользователь зашедший на этот ftp сервер, а нужно сделать чтобы пользователь имел возможность доступа ко всем дискам как к D:\ так и C:\ и т.д

Простите скинул исходником так как превышаю допустимое количество знаков если писать в посте.
HTTqp вне форума Ответить с цитированием
Старый 18.01.2014, 21:15   #5
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

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

Код:
procedure TForm1.FormCreate(Sender: TObject);
var p:pchar;i:byte;
begin
getmem(p,100);
GetLogicalDriveStrings(100,p);
for i:=ord('A') to ord('Z') do
 if pos(chr(i),p)=0 then ;
 AppDir :=(chr(i)+':\');
end;
HTTqp вне форума Ответить с цитированием
Старый 19.01.2014, 09:13   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Да не придумывай ты чушь. FTP сделан не для этого.
FaTaL вне форума Ответить с цитированием
Старый 19.01.2014, 11:13   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я для этого завел себе вот такую функу:
Код:
function Drives:integer;
var s,e:ansiString;i:integer;
begin
  SetLength(s,100);
  GetLogicalDriveStringsA(Length(s),@s[1]);
  i:=0;      e:='';
  while (i<100)and(copy(s,i,2)<>#0#0) do begin
    if s[i]=#0 then begin inc(i); e:=e+#13#10;end;
    if s[i]<>'\' then    e:=e+s[i];
    inc(i);
  end;
  DriversList.Text:=e;
  //DriversList.Text:=StringReplace(s,#0,#13#10,[rfReplaceAll]);
  SetLength(s,0);
  Result:=DriversList.Count-1;
end;
DriversList глобальная переменка типа TStringList
А далее в FtpServerListDirectory:
Код:
  if (APath='/') or (APath='') then begin
   for i := 0 to f.Drives do
      with ADirectoryListing.Add do begin
       FileName:=DriversList[i];
       ItemType:=ditDirectory;
      end;
И все. Тогда корнем будет список дисков в системе.

Да, кстати - это не сработает, если сервер настроен не пукать юзера в корень
Имей это ввиду.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.01.2014, 23:29   #8
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Stilet спасибо но у меня вопрос, DriversList и f.Drives это что? у меня он выдает ошибку как неизвестный идентификатор.
HTTqp вне форума Ответить с цитированием
Старый 20.01.2014, 01:37   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от HTTqp Посмотреть сообщение
Stilet спасибо но у меня вопрос, DriversList и f.Drives это что? у меня он выдает ошибку как неизвестный идентификатор.
Цитата:
DriversList глобальная переменка типа TStringList
а в f.Drives надо убрать f.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.01.2014, 23:20   #10
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Пепел Феникса, спасибо но теперь возникает ошибка при конекте:
550 Access violation at address 00577F6D in module 'FTPServer.exe'. Read of address 00000000

Посмотрите код может я в нем ошибся, буду очень благодарен)
Вложения
Тип файла: rar Server.rar (10.2 Кб, 10 просмотров)

Последний раз редактировалось HTTqp; 20.01.2014 в 23:25.
HTTqp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Библиотека BytesRoad.Net.FTP.dll для работы с FTP: как реализовать докачку файла E_x C# (си шарп) 2 18.12.2012 14:15
Проверка существования директории на ftp-сервере lino217 Общие вопросы Delphi 1 03.08.2011 06:18
ftp удаление, копирование и переименование директории ikot Работа с сетью в Delphi 3 05.07.2009 19:56
отправка директории kommunist Работа с сетью в Delphi 2 19.01.2008 17:24