⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch25.htm

📁 好书《C++ Builder高级编程技术》
💻 HTM
📖 第 1 页 / 共 5 页
字号:

{

  return 
FtpDeleteFile(FFtpHandle, S.c_str());

}



bool __fastcall TMyFtp::DeleteFileCustom(System::AnsiString S)

{

  S = *CustomToFileName(&S);

  return DeleteFile(S);

}



bool __fastcall TMyFtp::GetFile(System::AnsiString FTPFile,

  
System::AnsiString NewFile)

{

  return FtpGetFile(FFtpHandle, FTPFile.c_str(), NewFile.c_str(),

    False, FILE_ATTRIBUTE_NORMAL, FTP_TRANSFER_TYPE_BINARY, 0);

}



bool __fastcall TMyFtp::SendFile1(System::AnsiString FTPFile,

  
System::AnsiString NewFile)

{

  DWORD Size = 3000;

  AnsiString S;



  BOOL Transfer = FtpPutFile(FFtpHandle,

                       FTPFile.c_str(),

                       NewFile.c_str(),

                       FTP_TRANSFER_TYPE_BINARY, 0);

  
if (!Transfer)

  {

    int Error = GetLastError();

    S = Format("Error Number: %d. Hex: %x",

      OPENARRAY(TVarRec, (Error, Error)));

    ShowMessage(S);

    S.SetLength(Size);

    if 
(!InternetGetLastResponseInfo(&(DWORD)Error, S.c_str(), &Size))

    {

      Error = GetLastError();

      ShowMessage(Format("Error Number: %d. Hex: %x",

        OPENARRAY(TVarRec, (Error, Error))));

    }

    
ShowMessage(Format("Error Number: %d. Hex: %x Info: %s",

                OPENARRAY(TVarRec, (Error, Error, S))));

  }

  else

    ShowMessage("Success");

    

  return Transfer;

}



bool __fastcall 
TMyFtp::SendFile2(System::AnsiString FTPFile,

  System::AnsiString NewFile)

{

  HINTERNET FHandle;



  FHandle = FtpOpenFile(FFtpHandle, "sam.txt", GENERIC_READ,

                        FTP_TRANSFER_TYPE_BINARY, 0);

  if (FHandle != 
NULL)

    InternetCloseHandle(FHandle);

  else

    ShowMessage("Failed");

  return TRUE;

}



namespace Ftp2

{

  void __fastcall Register()

  {

    TComponentClass classes[1] = {__classid(TMyFtp)};

    
RegisterComponents("Unleash", classes, 0);

  }



}



</FONT></PRE>
<P><A NAME="Heading25"></A><FONT COLOR="#000077"><B>Listing 25.3. Header for the
main module of the FTPWININET program showing how to use the FTP component.</B></FONT></P>

<PRE><FONT COLOR="#0066FF">///////////////////////////////////////

// File: Main.h

// Project: FtpWinINet

// copyright (c) 1997 by Charlie Calvert

//

#ifndef MainH

#define MainH

#include &lt;vcl\Classes.hpp&gt;

#include 
&lt;vcl\Controls.hpp&gt;

#include &lt;vcl\StdCtrls.hpp&gt;

#include &lt;vcl\Forms.hpp&gt;

#include &lt;vcl\ExtCtrls.hpp&gt;

#include &lt;vcl\Buttons.hpp&gt;

#include &lt;vcl\Menus.hpp&gt;

#include &lt;vcl\Dialogs.hpp&gt;

#include 
&quot;Ftp2.h&quot;



class TForm1 : public TForm

{

__published:

  TListBox *ListBox1;

  TImage *Image1;

  TSpeedButton *SpeedButton1;

  TMainMenu *MainMenu1;

  TMenuItem *File1;

  TMenuItem *Connect1;

  TMenuItem *CopyFile1;

  TMenuItem 
*N1;

  TMenuItem *Exit1;

  TMenuItem *SendToSite;

  TSaveDialog *SaveDialog1;

  TMenuItem *Options1;

  TMenuItem *ChangeDirectory1;

  TMenuItem *RemoveDirectory1;

  TMenuItem *CreateDirectory1;

  TMenuItem *DeleteFile1;

  TMenuItem 
*EditConnectionData1;

  TMyFtp *Ftp;

  void __fastcall ConnectBtnClick(TObject *Sender);

  void __fastcall ListBox1DblClick(TObject *Sender);

  void __fastcall BackOneDirectoryBtnClick(TObject *Sender);

  void __fastcall CopyFileClick(TObject 
*Sender);

  // void __fastcall NewDirectory(TObject *Sender);

  void __fastcall NewDirClick(TObject *Sender);

  void __fastcall Exit1Click(TObject *Sender);

  void __fastcall SendToSiteClick(TObject *Sender);

  void __fastcall 
ChangeDirectory1Click(TObject *Sender);

  void __fastcall RemoveDirectory1Click(TObject *Sender);

  void __fastcall CreateDirectory1Click(TObject *Sender);

  void __fastcall DeleteFile1Click(TObject *Sender);

  void __fastcall 
ListBox1DrawItem(TWinControl *Control, int Index,

  const TRect &amp;Rect, TOwnerDrawState State);

  void __fastcall EditConnectionData1Click(TObject *Sender);

  void __fastcall ListBox1MouseDown(TObject *Sender, TMouseButton Button,

  TShiftState 
Shift, int X, int Y);

private:

  // TMyFtp *Ftp;

  AnsiString FStartCaption;

  Graphics::TBitmap *FFileBitmap;

  Graphics::TBitmap *FFolderBitmap;

  virtual __fastcall ~TForm1(void);

  void ActivateMenus();

public:

  virtual __fastcall 
TForm1(TComponent* Owner);

};



extern TForm1 *Form1;



#endif



</FONT></PRE>
<P><A NAME="Heading26"></A><FONT COLOR="#000077"><B>Listing 25.4. The main module
of the FTPWININET program showing how to use the FTP component.</B></FONT></P>

<PRE><FONT COLOR="#0066FF">///////////////////////////////////////

// File: MAIN.CPP

// Project: FtpWinINet

// copyright (c) 1997 by Charlie Calvert

//

#include &lt;vcl\vcl.h&gt;

#pragma hdrstop

#include &quot;Ftp2.h&quot;

#include 
&quot;Main.h&quot;

#include &quot;FtpNames1.h&quot;

#pragma link &quot;Ftp2&quot;

#pragma resource &quot;*.dfm&quot;

#pragma resource &quot;listicon.res&quot;



TForm1 *Form1;



__fastcall TForm1::TForm1(TComponent* Owner)

  : TForm(Owner)

{

  
FStartCaption = Caption;

  FFolderBitmap = new Graphics::TBitmap;

  FFileBitmap = new Graphics::TBitmap;

  FFolderBitmap-&gt;Handle = LoadBitmap((HINSTANCE)HInstance, &quot;FolderBmp&quot;);

  FFileBitmap-&gt;Handle = 
LoadBitmap((HINSTANCE)HInstance, &quot;FileBmp&quot;);

}



__fastcall TForm1::~TForm1()

{

  FFolderBitmap-&gt;Free();

  FFileBitmap-&gt;Free();

}



void TForm1::ActivateMenus()

{

  int i;



  for (i = 0; i &lt; ComponentCount; i++)

  {

    
if(dynamic_cast&lt;TMenuItem *&gt;(Components[i]))

      dynamic_cast&lt;TMenuItem *&gt;(Components[i])-&gt;Enabled = True;

  }

}



void __fastcall TForm1::ConnectBtnClick(TObject *Sender)

{

  Ftp-&gt;OnNewDir = NewDirClick;

  if 
(FTPNames-&gt;GetConnectionData())

  {

    Application-&gt;ProcessMessages();

    Ftp-&gt;Server = FTPNames-&gt;Server;

    Ftp-&gt;UserID = FTPNames-&gt;UserID;

    Ftp-&gt;Password = FTPNames-&gt;Password;

    Screen-&gt;Cursor = 
TCursor(crHourGlass);

    Ftp-&gt;Connect();

    Screen-&gt;Cursor = TCursor(crDefault);

    ActivateMenus();

  }

}



void __fastcall TForm1::ListBox1DblClick(TObject *Sender)

{

  int i = ListBox1-&gt;ItemIndex;

  AnsiString S = 
ListBox1-&gt;Items-&gt;Strings[i];

  Ftp-&gt;ChangeDirCustom(&amp;S);

}



void __fastcall TForm1::BackOneDirectoryBtnClick(TObject *Sender)

{

  Screen-&gt;Cursor = Controls::TCursor(crHourGlass);

  Ftp-&gt;BackOneDir();

  Screen-&gt;Cursor = 
Controls::TCursor(crDefault);

}



void __fastcall TForm1::CopyFileClick(TObject *Sender)

{

  AnsiString S = ListBox1-&gt;Items-&gt;Strings[ListBox1-&gt;ItemIndex];

  Ftp-&gt;CustomToFileName(&amp;S);

  SaveDialog1-&gt;FileName = &quot;C:\\&quot; 
+ S;

  if (SaveDialog1-&gt;Execute())

    Ftp-&gt;GetFile(S, SaveDialog1-&gt;FileName);

}



void __fastcall TForm1::NewDirClick(TObject *Sender)

{

  Caption = FStartCaption + &quot; -&gt;&gt; &quot; + Ftp-&gt;CurDir;

  ListBox1-&gt;Items = 
Ftp-&gt;FindFiles();

}



void __fastcall TForm1::Exit1Click(TObject *Sender)

{

  Close();

}



void __fastcall TForm1::SendToSiteClick(TObject *Sender)

{

  if (SaveDialog1-&gt;Execute())

  {

    AnsiString 
SaveFile(ExtractFileName(SaveDialog1-&gt;FileName));

    Ftp-&gt;SendFile1(SaveDialog1-&gt;FileName, SaveFile);

  }

}



void __fastcall TForm1::ChangeDirectory1Click(TObject *Sender)

{

  AnsiString S;

  if (InputQuery(&quot;Change 
Directory&quot;, &quot;Enter Directory&quot;, S))

    Ftp-&gt;ChangeDir(&amp;S);

}



void __fastcall TForm1::RemoveDirectory1Click(TObject *Sender)

{

  AnsiString Title(&quot;Delete Directory?&quot;);



  AnsiString S = 
ListBox1-&gt;Items-&gt;Strings[ListBox1-&gt;ItemIndex];

  S = *Ftp-&gt;CustomToFileName(&amp;S);

  if (MessageBox((HWND)Handle, S.c_str(), Title.c_str(),

      MB_YESNO | MB_ICONQUESTION) == ID_YES)

  {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -