Link to home
Start Free TrialLog in
Avatar of nhoj
nhoj

asked on

Network address instead of drive letter.

Using Microsoft Word it is possible to open and manipulate files on a network server by putting the IP address in the path instead of the drive letter.

Example:

I have a UNIX server with the IP number 193.133.116.1
I can map a file system on this server to drive on my PC,
say /data on the server to drive Fl appear in the windows explorer as /data on '193.133.116.1' (F:).

Obviously this is using TCP/IP as the network protocol.

I can then access this drive through Word as either F: or without mapping the drive as \\193.133.116\/data.

How can I use the second method with my applications in Delphi 3 ?

John Morin
Avatar of 333
333

Hi,
I'm not sure if it works with IP address, but i tested it with computer network name.
If you want to open a file on the network:
RichEdit1.Lines.LoadFromFile('\\mycomputer\share_c\autoexec.bat');

If you have mapped drive and you want to get full path then:
label1.caption:=ExpandUNCFileName('f:\autoexec.bat');
If drive F is mapped to \\mycomputer\share_c then label1.caption will be
''\\mycomputer\share_c'

A.
ASKER CERTIFIED SOLUTION
Avatar of jecksom
jecksom

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
1) ExpandUNCFileName also copies the filename (ExpandUNCFileName('f:\autoexec.bat') = '\\mycomputer\share_c\autoexec.bat' if drive F is mapped to \\mycomputer\share_c

2) It is possible, to have then same share mappet two different ways, eg. F: as \\mycomputer\share_c and G: as \\ip-number\share_c
Then ExpandUNCFileName('f:\autoexec.bat') = '\\mycomputer\share_c\autoexec.bat'
and ExpandUNCFileName('g:\autoexec.bat') = '\\ip-number\share_c\autoexec.bat'
nhoj, just map letter read file and unmap letter:

var
  nr:TNetResource;

procedure TForm1.Button1Click(Sender: TObject);
begin
nr.lpRemoteName:=stralloc(255);
nr.lpLocalName:=stralloc(255);
nr.dwType:=RESOURCETYPE_ANY;
StrPCopy(nr.lplocalName,  'f:'); // let say H:
StrPCopy(nr.lpremoteName, '\\195.18.32.62\jecksom\core');
nr.lpProvider:=nil;
if no_error=
WNetAddConnection2(nr,'password','login',CONNECT_RESERVED) then
begin
memo1.lines.LoadFromFile('f:\core');
if no_error<>WNetCancelConnection2('h:',0,false) then
showmessage('error unmapping');
end else showmessage('error mapping');
strdispose(nr.lpRemoteName);
strdispose(nr.lpLocalName);
end;

Jecksom
in my example must be :

WNetCancelConnection2('f:',0,false) // not h:
  and
you have to change  <IP> and <login> <password>.

Oh , line
memo1.Lines.LoadFromFile('\\193.133.116.1\resource\file'); , working too.

You don't have to map the share to read the file, you can just open the file as '\\server\share\filename'.
hustch: yes.
That's what I say.

A.
333: yep, your first comment was answer on question , sorry , will wait when nhoj awake.

Avatar of nhoj

ASKER

nhoj is awake!
I need some time to try these things.
Avatar of nhoj

ASKER

\\server_name\directory_name\file OR
\\IP_address\directory_name\file
work equally well.

When connecting to UNIX servers the slashes in the path must all be \ as in Windows and NOT / as is normal in UNIX. This is where I went wrong before.

Thanks