IdFTP1->Host = "127.0.0.1"; //Ftp 서버
IdFTP1->Port = 21; //Ftp 포트
IdFTP1->Username = "test"; // 사용자 계정 ID
IdFTP1->Password = "test"; // 사용자 계정 Password
IdFTP1->Connect();
TStringList *FileList = new TStringList;
if (IdFTP1->Connected() == true)
{
FileList ->Clear();
IdFTP1->TransferType = ftASCII;
IdFTP1->ChangeDir("/ftpTest/");
IdFTP1->List(FaultFileList, "*.*", false);
for (int Count = 0; Count < FileList ->Count; Count++)
{
Memo1->Lines->Add( FileList ->Strings[Count]);
}
}
Put 작업할때는 IdFTP1->TransferType = ftBinary;
신효철 님이 쓰신 글 :
: 안녕하세요.
: 초보개발자 인사올립니다.
:
: 얼마전 idftp client를 이용하여 한글 파일을 다운받고자 하였으나
: 잘 안되어 질문했었습니다.
: 그때 도움을 받아 진전이 있었으나 아직 문제가 있어
: 해결하다가 질문하게 되었습니다.
:
:
: IdFTP1->Host = "127.0.0.1"; //Ftp 서버
: IdFTP1->Port = 21; //Ftp 포트
: IdFTP1->Username = "test"; // 사용자 계정 ID
: IdFTP1->Password = "test"; // 사용자 계정 Password
: IdFTP1->TransferType = ftBinary; // 전송 방식
: IdFTP1->Connect();
:
: IdFTP1->IOHandler->DefStringEncoding = TEncoding::GetEncoding(949);
:
: try{
: //TStringList * sList = new TStringList;
: IdFTP1->ChangeDir("/ftpTest/"); //디렉토리 이동
:
: IdFTP1->List("*", false); //리스트,출력하고자하는 조건,true:속성포함 False파일명
:
: for(int i=0; i< IdFTP1->ListResult->Count; i++){
: Memo1->Lines->Add(IdFTP1->ListResult->Strings[i]);
: }
: }__finally{
: IdFTP1->Disconnect();
: }
:
: 이렇게 작성하여 테스트 하고자 하였으나 형변환이 안된다는 에러가 떨어졌습니다.
: [BCC32 Error] Unit2.cpp(33): E2034 Cannot convert 'TEncoding *' to 'TIdEncoding'
: DefStringEncoding 이 TidEncoding 이라 형변환이 안된다고 나오는데요.
: 그래서 강제 형변환을 하면
:
: IdFTP1->IOHandler->DefStringEncoding = TIdEncoding(TEncoding::GetEncoding(949));
:
: 한글은 표시 되지만 오류를 뱉어냅니다.
: First chance exception at $76F1B9BC. Exception class EAccessViolation with message 'Access violation at address 5002CBC6 in module 'rtl120.bpl'. Read of address 00000000'. Process Project2.exe (8620)
:
: 형변환을 강제로 해서 오류가 나는데.. 이걸 잡을 길이 안보여 도움을 구하고자 질문하게 되었습니다.
:
: TIdEncoding은 IdGlobal.hpp파일의
: enum TIdEncoding { enDefault, en7Bit, enUTF8, en8Bit }; 이라고 되어있고요.
:
: TEncoding은 SysUtils.hpp 파일의
: static TEncoding* __fastcall GetEncoding(int CodePage); 라고 선언되어 있습니다.
:
: 이걸 보고 뭘 어찌 해야할지 막혀서 선배님들의 도움을 구합니다.