2

我使用 IdHTTP 和 IdFTP 编写了一个程序,但我遇到了问题。我在 windows XP 32 位(使用 Delphi XE4)上编写了它,并且 exe 文件(Project1.exe)工作正常。当我尝试在 Windows 7 64 位上打开它时,计算机给了我一个错误。

图片:点击

这意味着“您无法访问路径或指定文件。也许您没有足够的权限”。我以前从未见过这个错误。在这里您可以看到带有源代码的文件夹的图片。

我该如何解决我的问题?

这是代码:

function downloadSrc(var aUrl:ansiString):ansiString;
begin
 with tIdHttp.create(nil) do begin        //Create Indy http object
  request.userAgent:=INET_USERAGENT;      //Custom user agent string
  redirectMaximum:=INET_REDIRECT_MAX;     //Maximum redirects
  handleRedirects:=INET_REDIRECT_MAX<>0;  //Handle redirects
  readTimeOut:=INET_TIMEOUT_SECS*1000;    //Read timeout msec
  try                                     //Catch errors
   result:=get(aUrl);                     //Do the request
   if url.port='80' then url.port:='';    //Remove port 80 from final URL
   aUrl:=url.getFullURI                   //Return final URL
  except result:='error' end;             //Return an error message if failed
  free                                    //Free the http object
 end
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
if not(DirectoryExists('C:\mk7vrlist')) then
begin
  CreateDir('C:\mk7vrlist');
end;
ComboBox1.Items.BeginUpdate;
 for i := 0 to 59 do
   begin
     ComboBox1.AddItem(IntToStr(40000+i*1000), nil);
   end;
ComboBox1.AddItem('99999', nil);
ComboBox1.Items.EndUpdate;
end;

procedure TForm1.Label5Click(Sender: TObject);
begin
 ShellExecute(self.WindowHandle,'open',PChar('http://www.mk7vrlist.altervista.org'),nil,nil,SW_SHOWNORMAL);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var s:ansiString;
begin
 IdFTP1.Host:= 'mk7vrlist.altervista.org';
 IdFTP1.Username:='mk7vrlist';
 IdFTP1.Password:=pass;
 IdFTP1.Connect;
 s:='http://www.mk7vrlist.altervista.org/databases/test.txt';
 Memo1.Lines.Add(Edit1.Text+':'+ComboBox1.Text+':'+Edit2.Text);
 Memo1.Lines.Add(downloadSrc(s));
 Memo1.Lines.SaveToFile('C:\mk7vrlist\test.txt');
 IdFTP1.ChangeDir('databases/');
 IdFTP1.Put('C:\mk7vrlist\test.txt');
 IdFTP1.Quit;
 IdFTP1.Disconnect;
 Label10.Visible:=True;
 Beep;
end;
4

2 回答 2

3

假设您的帐户具有管理权限,请右键单击您的程序图标,然后调用“以管理员身份运行”-您将收到提示/警告-单击“是”。

我不认为问题出在 32->64 位,而是从 XP 到 Win 7,默认情况下更注重访问。

您可以设置一个始终配置为以管理员身份运行的快捷方式,以避免右键单击步骤,但您仍会收到提示/警告。

于 2013-05-26T07:03:38.870 回答
0

CreateDir('C:\mk7vrlist)

普通用户无权访问 c:\

改为这样做(伪代码):

CreateDir('%temp%\mk7vrlist)

于 2013-05-27T04:00:43.087 回答