C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[46851] Re:Indy를 사용하면서..
박지훈.임프 [cbuilder] 1262 읽음    2006-10-21 06:42
서버 OS가 뭔가요? 유닉스 계열? 아님 윈도우?

ftp에서 받아오는 파일 목록은 기본적으로 해당 ftp 서버가 운영되고 있는 OS의 기본 파일 리스팅 그대로입니다.
무슨 말이냐 하면, 도스/윈도우에서는 dir 결과가 돌아오고, 리눅스/유닉스에서는 ls 결과가 돌아옵니다.
포맷이 OS에 따라 다르다는 얘기죠.

그런데 윈도우 계열에서 dir이야 포맷이 일정하지만, 유닉스의 여러 변종들 중에서는 ls 결과가 다양하게 변형되는 경우가 있습니다. 제가 유닉스의 ftp에서 파일 목록을 받아왔을 때 가장 골치아팠던 케이스는, 같은 파일 목록 안에 있는 파일 날짜들인데도 최근 1년내의 파일의 날짜와 1년이 지난 파일의 날짜는 다르게 표시되었던 겁니다. 제 기억으로는, 1년 이내의 파일은 연월일이 다 표시되지만 1년 이내의 파일은 월일까지만 표시되었던가... 그랬습니다.

그래서, 제 경험에 비춰보자면, 말씀하시는 경우가 아마 그 경우일 거 같습니다. 제가 그 작업을 했을 때가 2003년쯤이었는데, 그때도 인디9 버전이 위에서 말한 변칙적(?)인 파일 날짜 포맷을 지원을 안해줘서 인디를 고쳐썼든지 추가 파싱을 했든지 그렇게 해서 해결하고 넘어갔던 기억이 있습니다. 그게 인디9의 최종 버전까지도 지원이 안되었을 가능성이 충분히 있습니다.

이런 경우에 해당되는지 확인해보시려면, 텔넷으로 ftp에 직접 접속해서 파일 리스팅을 해보세요. (ftp 클라이언트 프로그램에서는 파일 목록을 파싱한 결과만 보여주므로 알 수가 없습니다) 그래서 만약 1년 이전과 이후의 파일이 포맷이 다르게 나온다면 바로 제가 말한 경우인 거죠.

만약 그렇다고 결론이 나면.. 해결책은 간단합니다.
년 부분이 없을 경우 1년 이내의 파일이라고 간주하고 연도를 스스로 계산해서 넣으면 되는 겁니다.

인디가 지원을 못해주는 건 맞는데, 그렇다고 인디의 기능이 모자라다고 하기는 그렇고, 다양한 유닉스 변형마다 ls 포맷이 다들 달라서 그런 거라고 생각됩니다.

그럼...


커트 님이 쓰신 글 :
: Indy FTP 컴포넌트를 이용해 FTP서버에 있는 파일이 로컬에있는 파일보다(년/월/일/시 비교)최신이면 다운받는 로직을 구현했습니다. 그런데 IdFTP1->List(ListBox1->Items, "", true); 해서 ListBox1에 보여지는 파일리스트중에 연도가 찍히질 않습니다.
: FTP 서버에 있는 파일 정보중 연/월/일/시의 정보만을 가져올수는 없는건가여?
: 도저히 모르겠습니다..
: 도와주세용....
: (참고:NMFTP 컴포넌트를 써도 똑같네요..ㅠㅠ)

+ -

관련 글 리스트
46836 Indy를 사용하면서.. 커트 966 2006/10/20
46851     Re:Indy를 사용하면서.. 박지훈.임프 1262 2006/10/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.