파일명이 깨져서 나온다는 말씀 인가보네요 ㅠ.ㅜ
전 아래 방법으로 늘 써왔는데 한글 파일명 잘 받아왔는데요 ....
이상하네요 ㅜ.ㅜ;;
신효철 님이 쓰신 글 :
: il's 님 감사합니다.
:
: 알려주신 방법으로 해봤는데 한글이 깨져서 나옵니다.
:
: IdFTP1->IOHandler->DefStringEncoding = TEncoding::GetEncoding(949);
: 를 어찌 사용해야 한글이 해결될거 같은데 잘 안되네요.
:
:
: 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); 라고 선언되어 있습니다.
: : :
: : : 이걸 보고 뭘 어찌 해야할지 막혀서 선배님들의 도움을 구합니다.