안녕하세요.
초보개발자 인사올립니다.
얼마전 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); 라고 선언되어 있습니다.
이걸 보고 뭘 어찌 해야할지 막혀서 선배님들의 도움을 구합니다.
|