Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / соединение с сервером / 23 сообщений из 23, страница 1 из 1
20.06.2018, 16:08
    #39663151
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
у меня такая задача: найти файл, который находится в одной из множества папок множества подпапок и выбрать этот файл.
функцией рекурсивного поиска FindRecursive ('\\server-nas\GOST-FA\', '*.*') находится нужный файл, opendialog выбирает файл из получившейся директории (директория в Edit):
Код: sql
1.
2.
if Edit2.Text<>'' then
OpenDialog1.InitialDir:= ExtractFilePath(Edit2.Text);


директория \\server-nas\GOST-FA\...., по которому я выбираю к.-л. файл, заблокирована (логин/пароль).
у меня возникло 2 вопроса:
1. почему при выборе файла в программе не появляется окно с вводом логина и пароля (доступ к серверу);
2. как перейти к нужному файлу, не вводя предварительно логин и пароль на сервере?
...
Рейтинг: 0 / 0
20.06.2018, 16:10
    #39663153
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
обработчик кнопки:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure TForm1.Button1Click(Sender: TObject);
begin
FindRecursive ('\\server-nas\GOST-FA\', '*.*');
OpenDialog1.Title:='Выберите файл';
OpenDialog1.Filter:='Все файлы|*.*';
if Edit2.Text<>'' then
OpenDialog1.InitialDir:= ExtractFilePath(Edit2.Text);
if OpenDialog1.Execute then ShowMessage(openDialog1.FileName);
end;
...
Рейтинг: 0 / 0
20.06.2018, 16:39
    #39663172
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterina1. почему при выборе файла в программе не появляется окно с вводом логина и пароля (доступ
к серверу);
2. как перейти к нужному файлу, не вводя предварительно логин и пароль на сервере?

1. Окно уже появлялось при входе в Windows. Повторять не имеет смысла.
2. Никак. Это основы компьютерной безопасности.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.06.2018, 16:46
    #39663176
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
при загрузке Windows я пароля не ввожу. пароль используется только тогда , когда мне нужно зайти на сервер nas. это я делаю в своей программе, но пароль почему-то не запрашивается и opendialog выбирает не ту директорию.
...
Рейтинг: 0 / 0
20.06.2018, 17:19
    #39663189
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterinaopendialog выбирает не ту директорию
opendialog сам ничего не выбирает. На то он и диалог. Диалог с пользователем, т.е. с тобой. Ты выбираешь директорию, файл. Если ты выбираешь не ту директорию - спрашивай у себя, зачем ты выбираешь не ту директорию.
...
Рейтинг: 0 / 0
20.06.2018, 17:23
    #39663190
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterina,

Если же речь об OpenDialog1.InitialDir, то в справке написано, что
If no value is assigned to InitialDir, or if the specified directory does not exist, the initial directory is controlled by the global ForceCurrentDirectory variable. If ForceCurrentDirectory is true, the dialog opens with the current working directory displayed. Otherwise, the dialog opens with either the current working directory or the My Documents directory, depending on the version of Windows.
http://docwiki.embarcadero.com/Libraries/Seattle/en/Vcl.Dialogs.TOpenDialog.InitialDir
...
Рейтинг: 0 / 0
20.06.2018, 17:24
    #39663191
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterina,

а директория, на которую нет прав, как раз "not exist"
...
Рейтинг: 0 / 0
20.06.2018, 17:40
    #39663208
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterinaпри загрузке Windows я пароля не ввожу. пароль используется только тогда , когда мне нужно
зайти на сервер nas.

Тем, кто не ввёл пароль при загрузку Windows системный администратор, очевидно, запрещает
доступ к NAS. Общайтесь с ним на эту тему.

Ну или RTFM WNetAddConnection2/3().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.06.2018, 17:46
    #39663214
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterina,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
function ConnectToNetworkDrive(APath:string):integer;  
var rc:TNetResource;
    PPass,PUser:PChar;
    UName,Pass:string;
    Err:integer;
begin
  ZeroMemory(@rc, sizeof(rc));
  rc.dwType := RESOURCETYPE_DISK;
  rc.lpLocalName := nil;
  rc.lpRemoteName := PChar(APath);
  rc.lpProvider := nil;
  if LoginDialog('Connect to network drive','User name','Password',UName,Pass) then  // тут диалог запроса логин/пароль
     begin
       if (Trim(Pass)<>'') then PPass:=PChar(Pass) else PPass:=nil;
       if (Trim(UName)<>'') then PUser:=PChar(UName) else PUser:=nil;
       Err:=WNetAddConnection2(rc,PPass,PUser,CONNECT_UPDATE_PROFILE);
       if Err = NO_ERROR then Result:=0   // success
       else Result:=1;                    // error
     end
   else Result:=2;                         // canceled
end;



Т.е. если тебе нужно обращаться к запароленным шарам:
1) Проверить, можно ли сменить директорию на \\share_name\
2) Если не удалось - выполнить ConnectToNetworkDrive() и посмотреть на результат
3) Если все ок - сменить директорию и звать свой OpenDialog()
...
Рейтинг: 0 / 0
21.06.2018, 08:50
    #39663375
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
YuRock,

то есть нужно использовать ForceCurrentDirectory?
...
Рейтинг: 0 / 0
21.06.2018, 09:15
    #39663387
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterinaYuRock,

то есть нужно использовать ForceCurrentDirectory?

Гм... ForceCurrent.... - это откуда такой зверь выполз? Вы в одну корзинку все не валите
...
Рейтинг: 0 / 0
21.06.2018, 09:22
    #39663391
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
DarkMaster,

1) Проверить, можно ли сменить директорию на \\share_name\

нельзя.
...
Рейтинг: 0 / 0
21.06.2018, 09:41
    #39663401
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterina,

Ну так зови WNetAddConnection2() и смотри на результат. Логин и пароль ты знаешь.
...
Рейтинг: 0 / 0
21.06.2018, 11:06
    #39663457
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
DarkMaster,

Вы знаете, я сделала так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Procedure Tform1.AddDisk;
Var
nr: NETRESOURCE;
lpLogin, lpPassword:PChar;
Begin
ZeroMemory (@nr, SizeOf (nr));
nr.dwType := RESOURCEType_DISK;
nr.lpLocalName := nil;
nr.lpRemoteName := '\\server\***';
nr.lpProvider := Nil;
lpLogin:='***';
lpPassword:='***';
If WNetAddConnection2 (nr,lpLogin, lpPassword, CONNECT_UPDATE_PROFILE) <> NO_ERROR
Then begin
ShowMessage ('Ошибка подключения к серверу.');
exit;
end;
End;


все работает, но все равно при первом обращении в программе в серверу-nas opendialog открывает диалоговое окно с каталогом Мои документы. программу нужно остановить. при дальнейших обращениях все работает нормально - открывается нужная директория. что такое?
...
Рейтинг: 0 / 0
21.06.2018, 11:09
    #39663461
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterinaто есть нужно использовать ForceCurrentDirectory?Не знаю, что это
...
Рейтинг: 0 / 0
21.06.2018, 11:23
    #39663475
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
YuRockTsYekaterina,

the global ForceCurrentDirectory variable
...
Рейтинг: 0 / 0
21.06.2018, 11:28
    #39663480
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterina,

Отлично, к серверу вы подключились. А теперь просто установите InitialDirectory (как-то так, не помню точное название проперти) в своем OpenFileDialog в имя шары перед его вызовом.

Код: pascal
1.
2.
3.
  MyOpenFileDialog.InitialDirectory:='\\my_share_name\needFolderName';
  if  MyOpenFileDialog.Execute then 
     // --- что-то там делаем
...
Рейтинг: 0 / 0
21.06.2018, 12:13
    #39663535
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
TsYekaterinaчто такое?

Вы так и не уволили безмозглых программистов, которые не в состоянии вызывать функции в
нужном порядке, а не от балды.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.06.2018, 12:19
    #39663542
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
PS: Если бы в конторе был нормальный сисадмин, "Мои документы" уже давно уехали бы на NAS
целиком с помощью доменных политик и не пришлось бы мучить программистов изготовлением
костылей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.06.2018, 12:34
    #39663560
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
Dimitry Sibiryakov,

nas - файловой хранилище другой программы, и нет смысла вывозить "Мои документы" на сервер.
...
Рейтинг: 0 / 0
21.06.2018, 12:34
    #39663563
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
Dimonka,

о откуда Вы знаете, что я ввела то, что используется?:-)
...
Рейтинг: 0 / 0
21.06.2018, 12:42
    #39663568
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
DimonkaТак больше не делай! Иначе ДаркМастер залезет к дяде Караеву на его расшаренный диск :-)Поздно, "побывали уже в глазах твоих, и всё, что нам нужно, взяли" (с)
...
Рейтинг: 0 / 0
21.06.2018, 13:17
    #39663597
TsYekaterina
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
соединение с сервером
спасибо всем за помощь!
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / соединение с сервером / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]