Dzien dobry,
Piszac rozne aplikacje, glownie na wlasne potrzeby trafilem kiedys na na takie nieprzyjemne ograniczenie: w edytorze Delphi mozna docelowo umiesci do 65536 linii kodu (wliczajac puste linie i komentarze).
Umieszczenie wiekszej ilosci kodu powoduje, ze nie dzialaja "breakpoints".
Spotkalem sie jeszcze z innymi usterkami dotyczacymi tych 65536 linii kodu zwiazanymi z ustawianiem parametrow, pokazywaniem bledow w linii o numerze modulo N (gdzie N = 65536) i inne) - ale mnie interesuje raczej ta pierwsza cecha - brak mozliwosci debbugowania i zwiazane z tym takze inne klopoty.
Na pewnym angielskim forum jakas osoba dzziwila sie, ze pisze sie tak "dlugasne" programy i zaproponowala podzial na "unity". Byly tez inne podobne rady.
Otoz najpierw maly komentarz: w dobie gigapamieciowych urzadzen (ramu, dyskow itp) - wydaje mi sie dziwne, ze nie moge pisac w sposob jaki mi odpowiada. Rozumiem, gdyby to bylo pare milionow linii kodu, ale 65 K?
Co ciekawe, 3/4 z mojego programu, ktory w tej chwili przekraca 70 K linii to komentarze.
Moje pytanie jest takie: jak mozna ten problem rozwiazac, bo katorga z podzialem tego ustrojstwa na mniejsze moduly nie usmiecha mi sie.
Tlumacze to jeszcze raz, dla osob, ktore chciabyby podzielic to na mniejsze unity: oczywiscie to w koncu jest wykonanle, ale nie wyobrazam sobie jak moglbym to zrobic w rozsadnym czasie.
Zrobilem nawet pare prob, ale jak napisalem to jest katorga, bo wszystkie procedury, formy, zmienne i tablice musza sie wzajemnie widziec, tak jakby byly w jednym unicie. A to nie takie proste, bo procedura A z unitu 1 moze wywolywac procedure B z unitu 2, ale takze oczywiscie odwrotnie.
Jesli np: wpisze sie w kazdym unicie deklaracje dolaczenia wszystkich innych unitow np (z wyjatkiem wlasnego oczywiscie) jak w unicie 2 (dodatkowo w unicie "global1" sa wszystkie zmienne globalne i tablice):
(to bedzie w unit1):
uses
unit2, unit3, global1
(to bedzie w unit2):
uses
unit1, unit3, global1
(to bedzie w unit3):
uses
unit1, unit2, global1
to kompilator informuje, ze tak nie wolno, bo nastapi cykliczne wywolywanie rekurencyjne "Circular unit reference" o ile dobrze pamietam.
Jesli zas zadeklaruje sie to zgodnie z wymaganiami kompilatora, to jest umiesci sie "includy" tylko w 1 unicie, w ktorym beda wywolania do 2 i 3, to kompilator z kolei informuje, ze w unicie 2 i 3 napotkal na nieznane/niezadeklarowane procedury z unita 1.
Prosze wiec o rade jak to rozwiazac - jak mozna cieszyc sie edycja kodu ponad 65536 linii bez zdanych dziwnych ograniczen ze strony debuggera/breakpoints.
I/LUB
Jak mozna uwspolnic wszystkie procedury i inne sprawy, tak aby byly widoczne z kazdego unita bez ograniczen - innymi slowy aby powiedzmy 3 czy 10 unitow zachowywalo sie jak 1 ale z wygoda przelaczania pomiedzy fragmentami kodow/debuggowania zawartymi w kilku unitach.
Jestem juz zmeczony tygodniowym przeszukiwaniem internetu w poszukiwaniu tak oczywistych spraw. Pewnie gdzies one sobie (te informacje) siedza zaszyte w jakiejsc bazie wiedzy, tylko szkopul w tym, ze trzeba wiedziec gdzie.
Tak zreszta jest chyba ze wszystkim.
Mam nadzieje, ze podane tu rady przydadza sie takze innym uzytkownikom.
Pozdrawiam,
jkoala
[email protected]
p.s.
Jesli ktos chce moze tez pisac na email, ale prosze raczej uwagi zamiescic na tym forum, poniewaz ostatnio onet dziala, tak, ze poczta pojawia sie z kilkudniowym opoznieniem, albo w ogole nie przychodzi.