我使用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;
答案 0 :(得分:3)
假设您的帐户具有管理权限,请右键单击您的程序图标,然后调用“以管理员身份运行” - 您将收到提示/警告 - 单击是。
我不相信问题是32-> 64位,而是从XP到Win 7,默认情况下更具体的是访问。
您可以设置一个始终配置为管理员的快捷方式,以避免右键单击步骤,但仍会收到提示/警告。
答案 1 :(得分:0)
CreateDir('C:\ mk7vrlist)
普通用户没有对c:\
的访问权限做这样的事情(伪代码):
CreateDir('%TEMP%\ mk7vrlist)