2012-08-10 14 views
6

Kiedy otworzyć Delphi 7 projektu w Delphi XE2 i otwórz wariantu projektu pojawia się błąd:Delphi 7 do Delphi XE2 .res plików emisji

"Unable to set Icon: Cannot open file "........\AppName_Icon.ico". 
The system cannot find the file specified". 

Ja również zauważyć, że wersja informacji Projektu jest brakujący. Projekt Delphi 7 ma plik .Res zawierający MAINICON wraz z przechowywaną informacją o wersji. Dlaczego Delphi XE2 nie może używać tego pliku .Res do pobierania informacji o wersji MAINICON &.

Także jeśli próbuję skompilować aplikację w XE2 pojawia się błąd -

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

Plik MTXReq.vrc (nowy plik) i tworzony jest plik MtxReq.res zostanie usunięty.

Dlaczego tak się dzieje? Nie chcę stracić mojej ikony projektu i ustawień wersji z pliku .res.

Czy istnieje sposób zmuszenia XE2 do użycia pliku .res, a nie usunięcia?

Każda pomoc zostanie bardzo doceniona.


Niestety nie mogę skomentować jeszcze (potrzeba więcej punktów repotation) ...

Warren - tutaj reponse na pytanie (nie po prostu usuwając plik .dproj i utrzymując tylko .dpr, były szybsze?)

Usunąłem .dproj, .dproj.local Otworzyłem .dpr w XE2 i odtworzono plik .dproj. Powoduje cofnięcie ikony z .res, ale straciłem informację o wersji projektu. Zmieniano tylko wersję pliku i wersję produktu, ale utracono wszystkie inne informacje o wersji. (Dzieje się tak z powodu domyślnego pliku manifestu). Potem spróbowałem tego, co wyjaśniłem w kroku 1 mojego rozwiązania. Otwieram plik .dproj w notatniku usunąłem wpisy tagu pod i ponownie otworzyłem plik .dproj i wszystkie moje informacje o wersji zostały odzyskane. Problemem tutaj jest $ (BDS) \ bin \ default_app.manifest. Zauważyłem również, że informacje o wersji są przechowywane w tagu pod znacznikiem w pliku .dproj, a po usunięciu domyślnych pozycji manifestu, IDE zbiera poprawnie informacje o kluczu wersji z pliku.

W zasadzie usuwając plik .dpr, pominąłem etap wypakowywania i dodawania pliku .ico do projektu, ale musiałem edytować nowo utworzony plik .proj i usunąć wpisy dla domyślnego manifestu, aby pobrać informacje o wersji . (innym rozwiązaniem byłoby ręczne dodanie informacji o wersji i zapisanie projektu.) Nie próbowałem tego)

Odpowiedz

12

Aktualizacja 2015: pomysł Remy z odtwarzając .DPROJ plików starannie ręcznie, jest doskonała rada i powinny być traktowane pierwszy, mimo że moja odpowiedź jest oznaczony jako zaakceptowane.

Wersje Delphi przed XE2 wykorzystały pliki zasobów jako WEJŚCIE i WYJŚCIE w procesie kompilacji.Na przykład ikona projektu delphi 7 jest osadzona w tym pliku .res, który "chcesz używać delphi xe2", ale jest problematyczny w delphi 7, a teraz jest niewygodny w XE2. Zamiast tego teraz traktujesz plik .res jako czysty artefakt wyjścia, taki sam jak pliki wykonywalne. Nie przejmuj się sprawdzaniem plików .res w kontroli wersji i nie próbuj udawać, że plik .res jest miejscem, w którym na stałe przechowujesz swoje ikony. Jest to plik wyjściowy tworzony automatycznie przez kompilator, tak jak powinien być.

Jeśli jesteś nowoczesnym programistą, stary sposób pracy Delphi 7 mógł cię zirytować (to na pewno mnie zirytowało), ponieważ masz ciekawe i nierozwiązywalne pytanie o to, co zrobić w celu kontroli wersji: Czy sprawdzasz w .RES plik, czy nie? Oba podejścia miały pewne wady, a fakt, że pliki .RES są teraz artefaktami wyjściowymi tylko w XE2, jest najlepszy. Więc naucz się z tym żyć.

Teraz, gdy XE2 obsługuje ikony nie tylko dla komputera PC, ale także dla Maca, musi obsługiwać różne rzeczy i wyczyściło to. To jest początek problemu, który widzisz z plikiem .ICO. Widziałem dokładnie ten sam błąd i zignorowałem go, i po prostu dodałem ikonę z powrotem do projektu po tym, jak został w inny sposób przekonwertowany.

Konwersja projektu delphi 7 (.dpr i .cfg) na Delphi XE2 nie jest tak dużym problemem, jak konwersje między różnymi poziomami plików .dproj - każda wersja zaczyna się od Delphi 2005,2007,2009,2010, i później wprowadzono zmiany w formacie dproj. Kiedy pojawiają się problemy z konwersją tych projektów, nie robię tego, jak sugeruje Remy, ponieważ to strata czasu. Co mogę zrobić, to USUŃ DPROJ i pozwól mu konwertować tylko z pliku .dpr.
Ale porady Remy'ego, aby zacząć od zera, mają wiele zalet, w tym, że możesz uprościć swój układ projektu.

Tak czy inaczej, oto co musisz zrobić:

  1. Ignoruj ​​błąd.
  2. Dodaj ikonę do samodzielnego wyświetlania.
  3. Kontynuuj wesoło wzdłuż i nie martw się usunięciem pliku .res, co jest celowe i nie bez powodu. W razie potrzeby zostanie utworzony nowy. Nazwa pliku .ico na dysku zostanie odczytana przy użyciu zawartości pliku XD2 .dproj i wkompilowana do pliku .res, tak jak powinna być.
3

Jak zawsze, NIGDY nie należy pozwolić, aby IDE konwertował projekt ze starszej wersji na nowszą. . Konwersja RARELY działa poprawnie. ZAWSZE należy utworzyć nowy projekt w nowszym IDE, a następnie dodać do niego istniejące pliki źródłowe zgodnie z potrzebami.

+4

Dlaczego tak mówisz? Nigdy nie miałem problemów z dopuszczeniem ide do konwersji. – dummzeuch

+2

Następnie uważaj się za szczęściarza, ponieważ wielu użytkowników ma z tym problemy. Fora Borland/CodeGear/Embarcadero zawierały wiele skarg/zastrzeżeń na przestrzeni lat związanych z aktualizacją projektu. To po prostu nie działa poprawnie w wielu przypadkach. Większość członków TeamB (włączając mnie) mówi użytkownikom forum to samo w kółko - to samo, co tutaj powiedziałem. Najlepiej nie uaktualniać projektu, po prostu nie wiesz, co IDE może dostać źle. Zamiast tego stwórz nowy projekt. –

+4

Wiele razy widziałem te problemy. Nie zgadzam się tylko z usunięciem .dpr i .dpk. Znajduję tylko, że musisz usunąć wszystkie pliki .dproj. Aktualizacje z '.dpr' plus .cfg lub .dof działają znacznie sprawniej niż aktualizacje z jednego poziomu .dproj na inny poziom .dproj. Błąd pliku .ico, o którym wspomina OP, jest rzadkim przykładem tego ogólnego trendu. Ale błąd jest w większości nieszkodliwy, a po prostu oznacza, że ​​należy ręcznie wstawić inny plik .ico, ponieważ .res do wyodrębniania plików .ico nie powiodło się. Jeśli nie masz już zwykłego pliku .ico, to jest to prawdziwy ból. –

1

Dziękuję wszystkim za Twoje uwagi i sugestie.

Po złożyłem delegowania, próbowałem kroki, aby rozwiązać ten problem .ico i brakujący Wersja emisyjnej/info o wersji przeniesienie zagadnienia:

Krok 1. Zmieniono plik .dProj i usunięto odniesienie do powiązanych pozycji default_app.manifest w tagu (Moja platforma projektowa to 32-bitowe) Usunąłem wszystkie znaczniki pod tym znacznikiem wyjątkiem związanym z przestrzenią nazw System.Win; Data.Win; Datasnap.Win; Web .Win; Soap.Win; Xml.Win; Bde; $ (DCC_Namespace)

Bez tego moja aplikacja zawsze wyświetlała informacje o wersji jako 1.0.0.0 i ignorowała wszystko, co wcześniej określiłem.

(nie jestem pewien, czy jest to właściwy krok, ale to rozwiązać mój problem wersja informacji. Nie może być prostsze/inne rozwiązanie dla tego ...)

Krok 2. wyodrębnione z ico stary plik .res, nazwał go i dodał plik .ico do projektu z opcji projektu. fizyczne.Plik ico jest folderem projektów i zostanie sprawdzony w kontroli źródła (VSS w moim przypadku).

Te dwa kroki kupiły mi to, czego potrzebowałem, a następnie mogę zmodyfikować numer wersji i skompilować projekt. Od tego momentu nie ma żadnych problemów.

Były one znacznie prostsze niż całkowita konwersja/migracja, którą musiałem wykonać dla moich aplikacji od D7 do XE2 - konwersja Unicode, migracja dostosowanych składników Raize 5 do Raize 6, Turbo Power, Virtual Tree View, Hypergrid itp. etc ... Na szczęście znalazłem wersje XE2 wszystkich tych komponentów.

+0

Nie tylko usunięcie pliku .dproj i zachowanie tylko .dpr, były szybsze? –

Powiązane problemy