• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 322
  • Last Modified:

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
0
nhoj
Asked:
nhoj
  • 6
  • 2
  • 2
  • +1
1 Solution
 
333Commented:
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.
0
 
jecksomCommented:
hi nhoj!

As you said you have "Unix" server and probably Samba daemon installed on it,
you could access resources only via netbios (that can be differs from nds) name like :
\\server\<user_or_resource_name>\<file> , in case this "Unix" server is in your network
segment or whatever annouced you don't have to worry about IP<-> Netbios address
translation, windows do it for you , but if you want to access machine in different (not announced
segment) you have to put <IP     NETBIOS name> in your \windows\lmhosts file and then
connect as "usually". Check WNetAddConnection2 for "usually" connection.

Jecksom

0
 
hustchCommented:
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'
0
Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

 
jecksomCommented:
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
0
 
jecksomCommented:
in my example must be :

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

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

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

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

0
 
nhojAuthor Commented:
nhoj is awake!
I need some time to try these things.
0
 
nhojAuthor Commented:
\\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
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

  • 6
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now