Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

WNetGetUniversalName   Найти похожие ветки 

 
mich   (2004-04-15 16:04) [0]

Доброго времени суток, знатоки!
Пытаюсь сделать так:

var LocalName: PChar;
   iType: DWORD;
   Buffer: REMOTE_NAME_INFO;
   BufSize: DWORD;
...
LocalName:= Edit1.Text; //"O:"
iType:= REMOTE_NAME_INFO_LEVEL;
BufSize:= MAX_PATH*MAX_PATH*MAX_PATH;
WNetGetUniversalName(LocalName, iType, @Buffer, BufSize);
...


Работает. В полях переменной Buffer возвращаются искомые значения, НО: сразу после этого программа вылетает с ошибкой "Access violation...". Не могу понять из-за чего. Прошу помощи. Спасибо.


 
VMcL ©   (2004-04-15 16:15) [1]

>>mich  (15.04.04 16:04)

>LocalName:= Edit1.Text;
Тут вообще ошибка вомпилятора.

>BufSize:= MAX_PATH*MAX_PATH*MAX_PATH;
Долго думал? А справку читал?

var
 LocalName: PChar;
 iType: DWORD;
 Buffer: REMOTE_NAME_INFO;
 BufSize: DWORD;
...
LocalName:= PChar(Edit1.Text); //"O:"
iType:= REMOTE_NAME_INFO_LEVEL;
BufSize:= SizeOf(Buffer);
WNetGetUniversalName(LocalName, iType, @Buffer, BufSize);


 
VMcL ©   (2004-04-15 16:23) [2]

+ Нужен анализ результата вызова функции.


 
mich   (2004-04-15 16:30) [3]

2 VMcL:
LocalName:= PChar(Edit1.Text) - очепятался.
А относительно MAX_PATH^3 - три поля REMOTE_NAME_INFO, в которых возвращаются пути.
Значение, которое она возвращает - 0 (NO_ERROR). А как сделать анализ?


 
VMcL ©   (2004-04-15 16:34) [4]

Вот пример, но на С:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wnet/wnet/determining_the_location_of_a_share.asp


 
Игорь Шевченко ©   (2004-04-15 16:41) [5]


> А относительно MAX_PATH^3 - три поля REMOTE_NAME_INFO, в
> которых возвращаются пути


Может быть, MAX_PATH * 3 ? :)))


 
VMcL ©   (2004-04-15 16:51) [6]

2 mich

procedure TForm1.Button1Click(Sender: TObject);
var
 LocalName: PChar;
 iType: DWORD;
 Buffer: array [0 .. 3 * MAX_PATH + 2] of Char;
 BufSize: DWORD;
 Res: DWORD;
begin
 Memo1.Clear;
 LocalName := PChar(Edit1.Text); //"O:"
 iType := REMOTE_NAME_INFO_LEVEL;
 BufSize := SizeOf(Buffer);
 Res := WNetGetUniversalName(LocalName, iType, @Buffer[0], BufSize);
 if Res <> NO_ERROR then RaiseLastOSError;
 Memo1.Lines.Add(PRemoteNameInfo(@Buffer)^.lpUniversalName);
 Memo1.Lines.Add(PRemoteNameInfo(@Buffer)^.lpConnectionName);
 Memo1.Lines.Add(PRemoteNameInfo(@Buffer)^.lpRemainingPath);
end;



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
8-1079617174
TrollXP
2004-03-18 16:39
2004.05.30
Winamp Playlist


3-1083711368
Dark Man
2004-05-05 02:56
2004.05.30
Работа с SQL Server 2000 из под Delphi 5


3-1083833491
vic1
2004-05-06 12:51
2004.05.30
Последовательность событий при генерации ID


1-1084861513
Sandman25+1
2004-05-18 10:25
2004.05.30
Параметры типа procedure of object


3-1084116682
Alleum
2004-05-09 19:31
2004.05.30
реализовать перемену строк местами