【发布时间】:2013-05-25 23:15:52
【问题描述】:
我使用 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;
【问题讨论】:
-
这很可能是 NTFS 文件权限问题。程序是否正在读取其他文件并给您此错误?还是在您的程序运行后发生此错误,并且它尝试在您的计算机上读取其他内容?您没有说明该程序访问本地计算机上的内容。此外,将纯文本消息的文本直接放入您的问题中会更友好。您可以按 Ctrl-C 然后使用谷歌翻译来获取英文文本。
-
你是想在普通的 C:\ 或 ProgramDir 之类的文件夹上写吗?
-
程序使用winlnet在我的服务器上下载一个文本文件,并将文本保存在c:\folder1\folder2\textfile.txt
-
写入 C:\folder1 可能是 NTFS 权限错误。您是否知道 Windows 7 不再允许您以普通用户身份在根驱动器 C: 下创建文件夹?
-
如果你想看看我做了什么,我把我使用的代码放在了上面。这个错误不仅发生在我的 windows 7 电脑上,我和朋友测试过这个程序,他也有同样的问题。
标签: delphi