2009-09-21 4 views
0

TIdFTP를 사용하는 Delphi 5 앱을 작성했습니다. 몇 년 동안 잘 작동했습니다. 엑셀 파일을 업로드하는 것이 유일한 목적입니다.TIdFTP를 사용하는 앱이 Delphi 5에서 Delphi 2009로 이전하지 않습니다 ... 부패 업로드

내 컴퓨터를 다시로드하고 최근에 델파이 5가 사라졌기 때문에 최근에 델파이 2009로 마이그레이션되었습니다.

앱이 작동하는 것처럼 보이지만 대부분 1.5MB 파일을 통해 파일이 손상됩니다. 바이트가 삭제되고 업로드 된 파일이 원본보다 짧아 보입니다 (약 200 바이트).

내 첫 번째 생각은 전송 유형 이었으므로 이진으로 설정했으나 그 이상은 아닙니다.

어떤 아이디어가 있습니까?

감사합니다. mp

답변

0

사용중인 Indy의 버전은 무엇입니까? 최신 버전을 사용해 보셨습니까?
또한 다른 유형의 파일 (일반 텍스트, 실행 파일 등)을 사용해 보았습니까

+0

의견에 감사드립니다. 나는 d2009와 함께 제공된 10.2.5를 사용하고 있습니다. 나는 codegear의 d2009 설치의 복사본에있는 추악한 문제가 codegear의 업데이트에 포함될 것으로 예상하기 때문에 최신 버전을 사용하기를 꺼립니다. 또한 (JCL, JVCL과 마찬가지로) 나는 문제를 일으킬 수 있기 때문에 업그레이드하는 것에 대해 신중합니다. 매우 흥미로운 : EXE 및 기타 Excel 업로드 잘 처리하십시오! SaveAs를 다른 이름으로 사용하고 이름이 다른 한 올바르게 업로드합니다 ... Indy 문제와 같은 냄새가 없습니다. 감사합니다. François! –

+1

10.2.5는 매우 오래되었으며 실제로 D2009 +의 유니 코드 기능을 지원하지 않습니다. CodeGear는 업데이트가 인터페이스 호환 가능해야하고 Indy 업데이트는 일반적으로 인터페이스와 호환되지 않기 때문에 Indy에 대한 업데이트를 절대로 IDE 업데이트에 포함하지 않습니다. CodeGear의 기본 인디 설치를 안전하게 제거하고 새로운 버전을 수동으로 설치할 수 있습니다. 현재 Indy 버전은 10.5.7입니다. –

0

델파이 5와 델파이 2009의 큰 차이점은 Delphi 2009가 유니 코드를 사용한다는 것입니다. 어쩌면 당신은 유니 코드와 비 - 유니 코드를 혼합하고 있습니까? ASCII를 받고 있지만 UTF8처럼 ​​취급하고 있습니까?

0

너와 흡사하다. 내 생각에 전송은 바이너리가 발생하지 않는다는 것이다. 이것은 파일 이름을 변경하면 문제가 해결 될 가능성이 높다. ftp 대화를 따르는 데 사용할 수있는 패킷 스니퍼가 있습니까? 이렇게하면 모드가 올바르게 설정되었는지 확실하게 알 수 있습니다.

-don

+1

필자는 Indy의 과거 코드 개정을 다시 확인해야했지만 IIRC는 TransferType이 Binary로 설정되었지만 TIdFTP가 ASCII로 데이터를 전송 한 이전 Indy 10 릴리스에 버그가 있거나 그 반대의 경우도 있음을 잊어 버렸습니다. 어느). 이는 이후 릴리스에서 수정되었습니다. –

0

Delphi 5에는 Indy 구성 요소가 이미 설치되어 있지 않습니다. 따라서 다운로드하여 직접 설치해야합니다. 나는 결코 일하게하지 않았다. 이제 델파이 7을 사용하고 있으며 이미 미리 설치되어 있습니다. 그래서, 나는 Indy에 문제가 없었습니다. 그것만을 사용하기 위해 다운로드 할 때.

관련 문제