Ip машины

  • Автор темы ISMD
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

ISMD

#1
Зравствуйте!

У меня возникла такая проблема: как программно определить IP машины (в internet)?

И ещё одна: это связано с использованием функции CopyFile, где одним из параметров является адрес назначения файла (куда скопировать). Адреса типа '//имя_машины/папка/файл' не работают.

Спасибо!
 
Z

zubr

#2
как программно определить IP машины (в internet)?
Код:
function GetLocalIP: String;
const WSVer = $101;
var
wsaData: TWSAData;
P: PHostEnt;
Buf:PChar;
begin
Buf:=StrAlloc(128);
Result := '';
if WSAStartup(WSVer, wsaData) = 0 then 
begin
if GetHostName(Buf, 128) = 0 then 
begin
P := GetHostByName(Buf);
if P <> nil then 
Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
end;
WSACleanup;
end;
end;
И ещё одна: это связано с использованием функции CopyFile, где одним из параметров является адрес назначения файла (куда скопировать). Адреса типа '//имя_машины/папка/файл' не работают.
Должно работать, может ты что то не так делаешь, или комп на который ты пытаешься скопировать не в сети. Код в студию.
 
I

ISMD

#3
Код:
function TNWServ.SearchPlantByName(PlantName : String; Dest : String):BOOL;stdcall;
const
SAVED_FILE_NAME = 'C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\CDSPublishedData\PlantName.xml';
begin
DM.Query1.Close;
DM.Query1.SQL.Clear;
DM.Query1.SQL.LoadFromFile('\SQL_Reqs\PlantName.sql');
DM.Query1.ParamByName('prmV').DataType:=ftString;
DM.Query1.ParamByName('prmV').Value:=PlantName;
DM.Query1.Active:=True;
DM.ClientDataSet1.Active:=True;
DM.ClientDataSet1.SaveToFile(SAVED_FILE_NAME,dfXML);
Result:=CopyFile(SAVED_FILE_NAME,PChar(Dest),True); 
end;
В параметре Dest передаётся путь назначения.

zubr, спасибо за код :ph34r:
 
Z

zubr

#4
Извиняюсь за длительное отсуствие, собирался ответить и забыл, а сейчас заметил твою тему. В общем, если еще актуально:
1. Непонятно, все таки что у тебя в переменной Dest
2. Возможно каталог в который ты пытаешься скопировать нерасшаренный или нет доступа той машине, с которой ты пытаешься послать файл.
3. Возможно не установлено соединение с той машиной куда ты пытаешься послать файл. Попробуй предварительно, вручную послать туда файл. Чтобы программно установить соединение с удаленной машиной надо использовать функцию WNetAddConnection2.
 
Статус
Закрыто для дальнейших ответов.