il's 님 감사합니다.
알려주신 방법으로 해봤는데 한글이 깨져서 나옵니다.
IdFTP1->IOHandler->DefStringEncoding = TEncoding::GetEncoding(949);
를 어찌 사용해야 한글이 해결될거 같은데 잘 안되네요.
/////////////////////////////////////////////////////////////////////
ftpSW->Username = "xxx";
ftpSW->Password = "xxx";
ftpSW->Host = "xx.xx.xx.xx";
ftpSW->Port = 21;
ftpSW->Connect();
if(ftpSW->Connected())
{
ftpSW->IOHandler->DefStringEncoding = TIdEncoding(TEncoding::Default);
ftpSW->ChangeDir("/ftpTest/");
ftpSW->List(" ", false);
TIdFTPListItems *list = ftpSW->DirectoryListing;
int iCnt;
for ( iCnt = 0; iCnt < list->Count; iCnt++ )
{
Memo1->Lines->Add(list->Items[iCnt]->FileName);
}
}
하니 한글문제가 해결되었습니다ㅎㅎ
관심가져주시고 뎃글달아주신 il's 님 감사합니다ㅎㅎ
il's 님이 쓰신 글 :
: 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); 라고 선언되어 있습니다.
: :
: : 이걸 보고 뭘 어찌 해야할지 막혀서 선배님들의 도움을 구합니다.