Error Reading Form. Property does not exists.

0

Problem następujący: w projekcie używam własnego komponentu, który jest umieszczony na wielu formatkach, załóżmy, że 10.
W wyniku modyfikacji komponentu, zostało usunięte jakieś jego property (bo już niepotrzebne). I teraz wystarczy, że
w projekcie property to zostało ustawione na inną wartość niż domyślną, a wartość ta pojawia się w DFM-ie
formatki projektu. Podczas próby otwarcia takiej formatki w środowisku pojawia się komunikat (co jest oczywiste):

Error Reading Form. Error reading NazwaKontrolki.UsunieteProperty: Property UsunieteProperty does not exists.
Ignore the error and continue?

natomiast kompilator nie wykrywa tego na etapie samego build-owania lub kompilacji projektu. Zapewne DFM-y podczas tej
operacji nie są sprawdzane pod kątem poprawności właściwości komponentów, lecz od razu dołączane do zasobów exeka.
Potem po odpaleniu takiego exeka wyskakuje bardzo podobny komunikat i aplikacja crash-uje.

Pytanie: czy jest jakiś pewny sposób (poza kompilacją, build-owaniem które raczej tego nie zapewniają)
i bez wczytywania każdej z formatek do środowiska, żeby sprawdzić, czy wszystkie DFM-y są OK?

1

poza wyszukiwaniem plików, które zawierają nazwę nieistniejącego property lub wczytaniem każdej formatki nic innego nie przychodzi mi do głowy

0

Nie jestem ekspertem w tej dziedzinie, ale czy nie prościej/łatwiej jest przywrócić to property w celu wstecznej kompatybilności ze starszymi projektami ?

0

Nie wiem w jaki sposob wczytujesz formularze? Jesli tylko z dfm (recznie) mozesz obsluzyc metode onGetProperty.
Zobacz jak sie odbywa zapis komponentu do dfm (TWriter, TReader)

0

przeszukaj wszystkie pliki dfm pod kątem występowania tekstu UsunieteProperty i ręcznie zedytuj.
polecam Total Commandera ;-)

0
Decho napisał(a)

Nie jestem ekspertem w tej dziedzinie, ale czy nie prościej/łatwiej jest przywrócić to property w celu wstecznej kompatybilności ze starszymi projektami ?

Oczywiście, że można, ale jeśli komponent jest dedykowany dla konkretnego projektu, to pozostawienie niepotrzebnych (i nieaktywnych) właściwości spowoduje zaśmiecenie kodu, a jeśli za jakiś dłuższy czas wróci się do edycji projektu, to trzeba będzie sprawdzać, czy zmienione property jest aktywne, a nie tylko atrapą.
Ale jak Misiekd zasugerował, wystarczy przeszukać (np. TC) pliki projektu pod kątem występowania niepotrzebnego property (nawet w DFM-ach binarnych) i już wiadomo, gdzie jest coś do usunięcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1