• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 315
  • 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
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
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

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

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