【问题标题】:Delphi FTP upload Access violationDelphi FTP上传访问冲突
【发布时间】:2012-06-20 19:16:26
【问题描述】:

我正在尝试在我的网络空间中上传一个文件 .txt,但是问题开始了,我尝试的代码是这样的:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdExplicitTLSClientServerBase, IdFTP, StdCtrls;

procedure TForm1.Button1Click(Sender: TObject);
var
FTP:tidftp;
begin
FTP.Host:='website.altervista.org';
FTP.Username:='website';
FTP.Password:='password';
FTP.Port:=25;
FTP.Connect;
FTP.Put('C:\Users\user\Desktop\text.txt');
FTP.Quit;
end;

我没有收到任何错误,但是当我启动程序并单击按钮时,我收到错误:

紧接着:

按钮消失。

为什么?谢谢!

【问题讨论】:

  • 也许想阅读一些有关 delphi 语言的文档。

标签: windows delphi ftp indy


【解决方案1】:

在访问它之前,您必须为局部变量 FTP 实例化 TIdFTP 对象。所以尝试使用这个:

procedure TForm1.Button1Click(Sender: TObject);
var
  FTP: TIdFTP;
begin
  FTP := TIdFTP.Create(nil);
  try
    FTP.Host := 'serioussamhd.altervista.org';
    FTP.Username := 'serioussamhd';
    FTP.Password := 'password';
    FTP.Port := 21;
    FTP.Connect;
    FTP.Put('C:\Users\user\Desktop\text.txt');
    FTP.Quit;
  finally
    FTP.Free;
  end;
end;

【讨论】:

  • 谢谢,访问冲突错误消失了,但现在又出现了另一个错误:Socket Error # 10060 Connection timed out。
  • 只是一个wild guess,尝试使用端口21而不是25。
【解决方案2】:

您必须先创建tidftp 的实例。

var
FTP:tidftp;
begin
FTP:=Tidftp.Create(nil); //create the instance
try
  FTP.Host:='siteweb.altervista.org';
  FTP.Username:='siteweb';
  FTP.Password:='password';
  FTP.Port:=25;
  FTP.Connect;
  FTP.Put('C:\Users\user\Desktop\text.txt');
  FTP.Quit;
finally
  FTP.Free;
end;
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多