Linkowanie do unitu po przeniesieniu kodu do innego pliku

0

Cześć,

mam Unit z 8 tys linii (nawet nie pytajcie jak powstał - to długa historia dosłownie i w przenośni).
W końcu się sprężyłem i części kodu przenoszę do innych plików.
Wszystko prosto i ładnie ale mam mocno uciążliwy problem.

W tych fragmentach kodu jest bardzo dużo odwołań do zmiennych z pierwotnego unita i teraz muszę to wszystko linkować ręcznie i mam już troszkę dość wpisywania main.coś_tam-coś_tam.

Czy jest jakiś sposób w Delphi 2010 aby to zrobić automatycznie? Chodzi mi o to żeby IDE dodało nazwę unitu z kropką przed wszystkimi zmiennymi których nie rozpoznaje.
Pliki te są połączone tylko z jednym unitem więc nie trzeba nic kombinować.

Pozdrawiam
Robert

2

Musisz przepisać ten kod na porządną i czytelną postać - ficzery IDE to nie jest dobry pomysł; Zresztą jeśli zmienne są widoczne ze wspomnianego modułu to nie musisz podawać najpierw nazwy modułu, a po peratorze odniesienia nazwy zmiennej; Chyba że w obu modułach znajdują się zmienne o takich samych identyfikatorach i podanie nazwy modułu źródłowego jest konieczne;

W takim przypadku (zduplikowanych identyfikatorów) tym bardziej powinieneś przepisać ten kod.

0

z kodem tak źle nie jest, chociaż każdy kod po czasie można poprawić. Wielkość spowodowana jest niezdecydowaniem zamawiającego i tragicznym brakiem czasu.
Program parsuje pliki bankowe mt940. Oczywiście zaczęło się niewinnie od jednego formatu to szybko napisałem taki parser, później doszedł następny bank to dopisałem bez modyfikacji, następne były potrzebne na wczoraj to nie miałem czasu rozdzielić kodu na dll-ki lub moduły i tak się narobiło że obsługuje 11 różnych banków w jednym unicie. Katastrofa po prostu - przewijać mi się nie chce :).
Jako że mam do sparsowania następny bank to postanowiłem w końcu znaleźć trochę czasu i "posprzątać" :).
Jak pisałem, nad kodem panuję nawet teraz ale jednak muszę trochę dopisać tych nazw unitów - mam zwyczaj nie pozostawiać zmiennej bez nazwy unitu w innym pliku - tak z zasady bo nigdy nie wiadomo cze kiedyś nie dołączę nowego unitu i wtedy dopiero będę szukał co jest nie tak :).

Myślałem że po prostu jest jakaś funkcja w IDE o której nie wiedziałem - dzięki za odzew.

Pozdrawiam
Robert

1

.
TL;DR piszesz nie na temat :]

Jeżeli identyfikatory zmiennych są w tych obu modułach unikalne to nie ma potrzeby używania prefiksów w postaci nazw modułów; Po prostu; Jeśli jest inaczej to niestety ale trzeba ten kod poprawić.

0

W zasadzie @furious programming opisał wszystko ale ja jeszcze jako ciekawostkę dodam (odbiegając nieco od tematu), że podobny problem miałem z typami wyliczeniowymi. Mianowicie był jakiś tam typ wyliczeniowy w danym unicie i po przeniesieniu do oddzielnego bpl pojawił się problem gdyż typy o tych samych nazwach znajdowały się w wielu miejscach. Rozwiązaniem jest wtedy dyrektywa: SCOPEDENUMS np:

type
{$SCOPEDENUMS ON}
  TKBTaskControlsModes = (tmOnLine, tmOffline, tmOnlineSOS, tmAuto);
{$SCOPEDENUMS OFF}

takie coś spowoduje, że w innych unitach nie da się użyć typu na zasadzie tmOnline gdyż środowisko krzyknie wyjątkiem i na etapie pisania kodu używanego przez wielu programistów automatycznie masz wymuszenie podanie nazwy typu czyli TKBTaskControlsModes.tmOnline

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