Problem z dodaniem unit do aplikacji.

0

Uczę się na razie delphi, ale mam jeden problem z którym nie mogę się uporać. Otóż robię wszystko razem z książką:
http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_3
I poddział: Przykład użycia klas
No i teraz rozpoczyna się problem, wszystko jest ok itp, ale po prostu aplikacja nie używa w ogóle engine.pas. Chociaż robię tak jak w książce. Patrzyłem razem z listingiem, to myślę że jest tak samo jak u mnie. Tylko że tam działa engine.pas.
I moje pytanie: Jak dodać unit/moduł do aplikacji?

0

W Delphi 7 i wcześniejszych wystarczy wybrać z menu Project polecenie Add to project i wskazać na dysku odpowiedni moduł. Następnie dopisać go do sekcji uses modułu, w którym mamy zamiar go używać. I polecam wszystkie niestandardowe moduły trzymać w tym samym katalogu co dany projekt. W takim przypadku może wystaczyć samo dopisanie nazwy modułu do sekcji uses. Jednak lepiej dodać go również do projektu,. bo wtedy mamy możliwośc podglądu jego zawartości i wyboru z listy pod kombinacją Ctrl+F12. Podejrzewam, że w nowszych wersjach Delphi, z których nie korzystałem - wykonuje się to podobnie. A ten wątek przenoszę do działu Newbie, bo dotyczy raczej banalnych podstaw.

0

Dodałem poprzez Project -> Add to Project, ale i tak kiedy kompiluję to silnik nie włącza się do aplikacji.
Wydaję mi się że wszystko jest ok, ale jeśli mógłbyś to zobacz to: http://www.sendspace.com/file/vwre07

Mnie się wydaje że wszystko jest dopisane. Raczej nie pójdę dalej, jeśli tego nie ogarnę..

0

Tak jak dodałeś jest ok. Można też jeżeli unit nie odwołuje się do klas z modułu, do którego go przyłaczasz dodać wpis do sekcji uses na początku modułu. Program się mi kompiluje i uruchamia. Inna sprawa jak to ma działać. Ja bym plik przygotował sobie w kodzie zamiast takie template i zamienianie tekstów, bo ktoś jak pogrzebie w template i pozmienia nazwy do podmiany to program nie działa. Dlatego nalepiej ten dodać do zasobów i wczytywać z TResourceStream. Więcej znajdziesz na google. Poza tym metodę TEngine.Parse zmieniłem na chwilę dla próby tak jak poniżej i na końcu był kod:

//...
  FFileLines.SaveToFile('D:\temporary.html');
  Execute('D:\temporary.html');

Dzięki temu po zapisie na D:\ działa. Wcześniej nie wiem gdzie to się zapisywało, bo nie ma co polegać na nieokreślonej ścieżce. Gdyż można wywołać program skrótem albo z pod Total Commandera z róznym katalogiem roboczym. Polecał bym raczej przed nazwą pliku *.html dodać coś w stylu: ExtractFilePath(ParamStr(0)). Wtedy będziesz miał pewnośc, że plik zapisze się w katalogu gdzie jest exek programu.

0

Dobra... dzięki za odp. I tak to tylko ćwiczenie. hmm... ciekawe jest to że w listingu jest chyba to samo i tamto działa... Ok idę dalej. Dzięki jeszcze raz :)

0

Wszystko się wyjaśniło. Ja kopiowałem wszystkie kody itp. A po prostu brakowało zdarzenia button w events.

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