2012-08-10 2 views
6

는 오류가 발생합니다 있어야 할 곳에 없는. Delphi 7 프로젝트에는 버전 정보가 저장된 MAINICON이있는 .Res 파일이 있습니다. Delphi XE2가 .Res 파일을 사용하여 MAINICON & 버전 정보를 검색 할 수없는 이유는 무엇입니까?델파이 7

[BRCC32 Error] MtxReq.vrc(2): file not found: MtxReq_Icon.ico 

MTXReq.vrc 파일 (새 파일)이 생성되고 MtxReq.res 파일 삭제 - 나는 XE2에서 응용 프로그램을 컴파일하려고하면

또한 오류가 발생합니다.

왜 이런 일이 발생합니까? .res 파일에서 프로젝트 아이콘과 버전 설정을 풀고 싶지 않습니다.

XE2에서 .res 파일을 사용하고 삭제하지 못하게 할 방법이 있습니까?

도움이 될 것입니다.


미안

워렌 ... (더 repotation 포인트 필요) 아직 코멘트를 게시 할 수 없습니다 - 여기에 귀하의 질문에 대한 리스폰스가 (당신의 .DPROJ 파일을 삭제하지 않을까요 및 .dpr 만 유지하는 것이 더 빠름?)

.dproj, .dproj.local을 삭제했습니다. .xpr을 XE2에서 열고 .dproj 파일을 다시 만들었습니다. .res에서 아이콘을 다시 가져 왔지만 프로젝트 버전 정보를 잃어 버렸습니다. 파일 버전 및 제품 버전 정보 만 마이그레이션되었지만 다른 모든 버전 정보는 손실됩니다. 이는 기본 매니페스트 파일 때문입니다. 그런 다음 내 솔루션의 1 단계에서 설명한 내용을 시도했습니다. .dproj 파일을 메모장에서 열고 태그 항목을 삭제하고 .dproj 파일을 다시 열면 모든 버전 정보가 복구되었습니다. 문제는 $ (BDS) \ bin \ default_app.manifest입니다. 또한 버전 정보가 .dproj 파일의 태그 아래 태그에 저장되어 있고 기본 매니페스트 항목을 삭제하면 IDE에서 버전 정보를 올바르게 가져옵니다.

기본적으로 .dpr 파일을 삭제하면 프로젝트에 .ico 파일을 추출하고 추가하는 단계를 건너 뛰었지만 새로 만든 .proj 파일을 편집하고 버전 정보를 검색하기 위해 기본 매니페스트 항목을 삭제해야했습니다. . (다른 해결책은 버전 정보를 추가하고 프로젝트를 저장하는 것이 었습니다.)이 작업을 시도하지 않았습니다.

답변

12

2015 업데이트 : .DPROJ를 다시의 레미의 아이디어가 손으로 조심스럽게 파일 , 내 대답이 수락 표시된 경우에도, 훌륭한 조언을 먼저 고려되어야한다.

XE2 이전 버전의 Delphi는 리소스 파일을 컴파일 프로세스에서 INPUT 및 OUTPUT으로 사용했습니다.예를 들어, delphi 7 프로젝트 아이콘은 .res 파일에 포함되어 있습니다.이 파일은 "delphi xe2를 사용하고 싶습니다."그러나 delphi 7에서는 문제가 있으며 XE2에서는 불가능합니다. 대신 .res 파일을 실행 가능 파일과 동일한 순수한 출력 아티팩트로 취급합니다. .res 파일을 버전 제어로 더 이상 확인하지 마십시오. 그리고 .res 파일이 영구적으로 아이콘을 저장하는 장소 인 것처럼 가장하지 마십시오. 컴파일러가 자동으로 생성하는 출력 파일입니다.

현대적인 개발자라면 버전 관리를 위해해야 ​​할 일에 대해 흥미롭고 풀리지 않는 질문이 있기 때문에 델파이 7에서 일한 옛 방식이 나에게 짜증을 줄 수도 있습니다. 파일, 그렇지 않니? 두 가지 접근 방식에는 단점이 있으며 XE2에서만 .RES 파일이 출력 아티팩트로 제공됩니다. 그래서 함께 사는 법을 배웁니다.

이제 XE2는 PC뿐만 아니라 Mac에서도 아이콘을 지원하므로 다르게 처리해야하며이를 정리했습니다. 이것은 .ICO 파일로보고있는 문제의 근원입니다. 나는 똑같은 오류를 보았고 그것을 무시하고 단순히 변환 된 후에 아이콘을 다시 프로젝트에 추가했다.

델파이 7 프로젝트 (.dpr 및 .cfg)를 델파이 XE2로 변환하는 것은 델파이 2005200720092010으로 시작하는 다양한 버전의 .dproj 파일 간의 변환만큼 큰 문제는 아닙니다. 이후에는 dproj 형식이 변경되었습니다. 이 프로젝트를 변환하는 데 문제가 발생하면 시간 낭비이므로 Remy가 제안한대로하지 않습니다. 내가하는 일은 DPROJ를 삭제하고 .dpr 파일에서만 변환 해 보겠습니다.
하지만 처음부터 시작하는 레미의 충고는 프로젝트 레이아웃을 단순화 할 수 있다는 점을 포함하여 많은 이점이 있습니다.

  1. 이 오류를 무시 :

    은 어쨌든, 여기 당신이하는 일입니다.
  2. 직접 프로젝트에 아이콘을 추가하십시오.
  3. 계속해서 즐겁게 계속하고 .res 파일 삭제에 대해 고의적으로, 그리고 좋은 이유로 걱정하지 마십시오. 필요할 때마다 새로 만들 것입니다. 디스크의 .ico 파일의 파일 이름은 XE2 .dproj 파일의 내용을 사용하여 읽히고 .res 파일로 컴파일됩니다.
3

항상 그렇듯이 IDE가 프로젝트를 이전 버전에서 최신 버전으로 변환해서는 안됩니다 . RARELY 변환이 올바르게 작동합니다. 새로운 IDE에서 항상 새 프로젝트를 만든 다음 필요에 따라 기존 소스 파일을 추가해야합니다.

+4

왜 그런 말을하십니까? ide가 변환을 수행하는 데 아무런 문제가 없었습니다. – dummzeuch

+2

그러면 많은 사용자가 문제를 겪기 때문에 운이 좋다고 생각해보십시오. Borland/CodeGear/Embarcadero 포럼은 프로젝트 업그레이드 관련 문제에 대해 수년 동안 많은 불만 사항이 게시되었습니다. 그것은 많은 경우에 올바르게 작동하지 않습니다. 대부분의 TeamB 멤버 (포함되어 있음)는 포럼 사용자에게 계속해서 같은 말을 반복합니다. 프로젝트를 업그레이드하지 않는 것이 가장 좋습니다. IDE가 잘못 이해할 수있는 것을 모릅니다. 대신 새 프로젝트를 만드십시오. –

+4

나는 여러 번이 문제를 보았다. .dpr 및 .dpk 삭제에 대해서만 동의합니다. 난 당신이 어떤 .dproj 파일을 삭제해야 할 것을 알게됩니다. '.dpr'과 .cfg 또는 .dof의 업그레이드는 한 .dproj 수준에서 다른 .dproj 수준으로 업그레이드하는 것보다 훨씬 원활하게 작동합니다. OP가 언급하는 .ico 파일 오류는 일반적인 추세의 희귀 한 반례입니다. 그러나이 오류는 대부분 무해하며 단순히 .res 파일을 .ico 파일로 추출하지 못했기 때문에 수동으로 다른 .ico 파일을 삽입해야 함을 의미합니다. 더 이상 일반 .ico 파일이 없으면 정말 고통 스럽습니다. –

1

귀하의 의견과 제안에 감사드립니다.

1 단계 : 내 게시물을 제출 한 후

, 내가 문제를 통해 운반 질환자 문제 및 누락 버전 문제/버전 정보를 해결하려면 다음 단계를 시도했다. .dProj 파일을 편집하고 태그 아래 default_app.manifest 관련 항목에 대한 참조를 제거했습니다. (내 프로젝트 플랫폼은 32 비트 임) namespace System.Win; Data.Win; Datasnap.Win; Web과 관련된이 예외 태그 아래에있는 모든 태그를 삭제했습니다. .Win; Soap.Win; Xml.Win; Bde; $ (DCC_Namespace)

이 응용 프로그램이 없으면 항상 내 버전 정보가 1.0.0.0으로 표시되고 지정한 모든 항목은 무시됩니다.

는 (나는 이것이 바로 단계이지만, 내 버전 정보 문제를 해결하는 경우 모르겠습니다. 이것에 대한 간단한/다른 해결책이있을 수 있습니다 ...) 2 단계이 특별하다고에서 추출

예전의 .res 파일에 이름을 붙여 프로젝트 옵션에서 .ico 파일을 프로젝트에 추가했습니다. 실제.ico 파일은 프로젝트 폴더이며 소스 제어에서 검사됩니다 (필자의 경우 VSS).

이 두 단계를 통해 필자는 필자에게 필요한 것을 구입 한 다음 버전 번호를 수정하고 프로젝트를 컴파일 할 수 있습니다. 이 시점부터는 아무런 문제가 없습니다.

D7에서 XE2로 유니 코드 변환, Raize 5 구성 요소를 Raize 6, Turbo Power, Virtual Tree View, Hypergrid 등으로 마이 그 레이션하는 데 필요한 전체 변환/마이그레이션보다 훨씬 간단합니다. etc ... 운 좋게도 나는이 모든 구성 요소의 XE2 버전을 발견했습니다.

+0

.dproj 파일을 삭제하고 .dpr 만 유지하는 것이 더 빠르지 않았습니까? –