Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Ошибка при использовании System oO


Автор: uranpro 12.8.2008, 12:47
выдает ошибку оО:
identifier redeclared: 'System'

Код

unit uAU;

interface

function  UpdateProgram(ExeName,Name,Path:string):boolean;
function  IPAddrToName(IPAddr : String): String;
function  GetLocalIP:  String;
procedure CreateCMD(Name,Path,exeName:string);

implementation

uses System, winsock, SysUtils, Types  ;

const
   CMDName :WideString = 'ProgramsAU.cmd';

function CreateProcessWithLogonW(UserName, Domain, Password: WideString;
   LogonFlag: dword; AppName, CmdLine: WideString; CrtFlag: dword; Env: pointer;
   CurentDir: WideString; StartInfo:pointer; ProcInfo:pointer):BOOL; stdcall;
   external 'advapi32.dll';

function  GetLocalIP:  String;
const  WSVer  =  $202;
var
 wsaData:  TWSAData;
 P:  PHostEnt;
 Buf:  array  [0..127]  of  Char;
begin
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;

function IPAddrToName(IPAddr : String): String;
var  
 SockAddrIn: TSockAddrIn;
 HostEnt: PHostEnt;
 WSAData: TWSAData;
 s:string; i:integer;
begin
result:='';
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(IPAddr));
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
if HostEnt<>nil then begin
 s:=StrPas(Hostent^.h_name);
 i:=1;
 while (i<length(s)) and (s[i]<>'.') do begin
  result:=result+s[i];
  inc(i);
  end;
 end;
end;

procedure CreateCMD(Name,Path,exeName:string);
var f:file of text;
begin
AssignFile(f,CMDName); Rewrite(f);
Writeln(f,'color A');
Writeln(f,'echo '+Name+' AutoUpdate, wait...');
Writeln(f,'copy \\mycomp'+path+exeName+'.exe '+exeName+'.exe');
Writeln(f,'Deletefile '+CMDName);
CloseFile(f);
end;

function UpdateProgram(ExeName,Name,Path:string):boolean;
const
 aName :WideString = 'name';
 aPass :WideString = 'pas';
var
 aSrv:string;
 si: TSTARTUPINFO;
 pi: TProcessInformation;
begin
result:=false;
CreateCMD(Name,Path,exeName);

aSrv:=IPAddrToName(GetLocalIP);
ZeroMemory(@si, sizeof(si));
si.cb := sizeof(si);

if CreateProcessWithLogonW(aName,aSrv,aPass,1,CMDName,CMDName,0, nil,'',@si, @pi)
then result:=true;
end;

end.

Автор: Alkash 12.8.2008, 13:15
System из юзес убери...

Автор: THandle 12.8.2008, 13:18
Delphi автоматически подключает модуль System, поэтому и пишет что это повтор...

http://forum.vingrad.ru/topic-114950.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)