Interpreter poleceń w delphi

0

Witam, piszę program i chciałbym aby niektóre jego części nie były kompilowane, aby były w oddzielnych plikach. Np. jakieś funkcje zapisywałbym do oddzielnych plików abym mógł je łatwo edytować.

Przykład działania: Włączam aplikacje, a ona wtedy interpretuje zawartość jakiegoś pliku i wykonuje polecenia w nim zawarte. Byłyby to zwykłe polecenia z delphi, np. Writeln, czy jakieś podobne.

0

Pytanie brzmi: jak to zrobić?

0

Napisać własny interpreter lub użyć gotowego dostępnego dla delphi. Może lua się nada - nie wiem, nigdy nie próbowałem.

EDIT:
Rozszerzę odpowiedź @olesio o mój strzał w google: http://stackoverflow.com/questions/226135/scripting-library-for-delphi

0

Koniecznie napisz reklamację do swojego dostawcy Internetu, że blokuje Tobie dostęp do google.com - jakbyś poszukał to na pewno znalazł byś to co ja. Jest gotowy interpreter. Niestety tylko pod VCL. Ale jeśli ktoś jak ja woli próbować pisać częściej w WinAPI to takich rzeczy rzadziej tam potrzebuje. Przeszukałem dysk u siebie i znalazłem taki przykładowy projekt z wygooglowanymi kiedyś modułami co zwą się RemObjects Pascal Script i plikach modułow jest między innmi taki wpis jak poniżej, także pogoogluj sobie po więcej informacji. Wydaje się mi, że pewnie tak jak większośc komponentów pobrałem je z torry.

RemObjects Pascal Script III
Copyright (C) 2000-2009 by Carlo Kok ([email protected])
0

A nie da się tak po prostu przekierować wykonywania poleceń na te z pliku(nieskompilowane)?

0

A nie da się tak po prostu przekierować wykonywania poleceń na te z pliku(nieskompilowane)?

Da się. Odpowiedź padła już w tym temacie. Wystarczą dwa 3 kliknięcia aby ją znaleźć.

1

Biblioteka Jedi ma Interpretera pascala który łatwo da się podpiąć.

1

JEDI trzeba by było pewnie zainstalować. Ale dynamicznie jak ktoś się uprze to pewnie też da się użyć. Tylko, że z całego pakietu może być komuś, kto nawet nie ruszy tyłka i nie pogoogluja zanim zada pytanie na forum, wyodrębnić co trzeba. Natomiast z pakietu jaki ja poleciłem da się to zrobić prościej. Wystarczy do katalogu z projektem wrzucić poniższe pliki i już swobodnie mozna używać całości w sposób dynamiczny, na bazie kodu z przykładów. Zawsze się będę upierał, że komponenty niewizualne lub takie które nie musimy widzieć na etapie projektowania, bo łatwo jest ustawić należało by wrzucać w postaci wymaganych modułów i ewentualnych "inc'ów" do katalogu z projektem i starać się wszystko ogarniać dynamicznie. Taki projekt jest po prostu w pełni przenośny. I nie ma takich problemów jak ludzie męczą się z kodami w C++. Przykład z życia wzięty. Nawet autor świetnego emulatora WinUAE niestety nie ułatwił życia osobom, które chcą samodzielnie coś działać z kodem jaki udostępnił. Trzeba ogarnąć sporą instrukcje opisującą co skąd pobrać i jak skonfigurować. Ja jestem zdania, że mogę za pare miesięcy jakiś projekt komuś chcieć skompilować na przykładowo "gołym" Delphi 7 i będzie zawsze czegoś brakowało. A tak to przerzucam cały projekt z potrzebnymi plikami temu komuś i wszystko działa.

edefines.inc
pascalscript.inc
x86.inc
upsc_dll.pas
upscompiler.pas
upscomponent.pas
upsdebugger.pas
upspreprocessor.pas
upsr_dll.pas
upsruntime.pas
upsutils.pas
0

W językach interpretowanych zazwyczaj da się takie rzeczy zrobić bez jakichś dodatkowych modułów, np. w Python'ie mamy funkcję exec(), do której podaje się string z Pythonowym kodem do wykonania.

0

Pobrałem i zainstalowałem RemObjects Pascal Script, ale nie wiem za co się zabrać, jak to obsługiwać proszę o pomoc.

Wiem że wydaje się wam to takie proste, ale ja zaczynam programować dopiero i nigdy nie korzystałem z zewnętrznych bibliotek tego typu. Nie rozumiem też wielu rzeczy, więc postawiłem sobie zadanie że zrobię program, bo tak najszybciej wszystko zrozumiem. Pozdrawiam i przepraszam za zmarnowany czas, może to ja kiedyś będę pomagał takim osobom jaką właśnie jestem.

0

Najlepiej się nauczysz, jak wszystko obczaisz bez naszej pomocy ;) Dowalanie własnych skryptów do aplikacji jest najłatwiejsze właśnie w językach skryptowych. Wybrałeś Delphi, dopiero zaczynasz, więc cierp! :) Może w Delphi po prostu mało ludzi takie rzeczy robi, więc prędko nie znajdziesz chętnych do pomocy. Np. C/C++ z lua się dość łatwo łączy. W grze Battle for Wesnoth zdecydowali się dorobić skryptowanie map właśnie w Lua. Jeśli dopiero zaczynasz, to nie rzucaj się na głęboką wodę. Jeśli uważasz, że takie zadanie jest odpowiednie dla Ciebie to je rób. Szukaj materiałów aż znajdziesz coś przystępnie wytłumaczonego. Ewentualnie zmień język na taki, który używa więcej osób, to prędzej znajdziesz tutoriale dla mniej typowych zadań. https://www.google.com/search?q=lua+c%2B%2B+tutorial

0

Pobrałem i zainstalowałem RemObjects Pascal Script, ale nie wiem za co się zabrać, jak to obsługiwać proszę o pomoc.

No to po prostu wiesz zbyt mało żeby takie coś robić (widać to też po wcześniejszych postach gdzie popisujesz się głupotą).

może to ja kiedyś będę pomagał takim osobom jaką właśnie jestem.

Za jakieś 5 lat - może. Tylko że to takie gdybanie. Możemy równie dobrze gdybać że jeżeli ci nie pomożemy to sam wszystko znajdziesz.

Ja np. napisałem swój własny język skryptowy, który co prawda ostatnimi czasy nie dostaje dużo czasu, ale wspiera całkiem sporo rzeczy. Jeżeli chcesz się nauczyć jak działa taki interpreter to napisanie swojego jest całkiem dobrym sposobem.

Kodu nie możesz tak po prostu wykonać gdyż musisz go skompilować czyli przekształcić na assembler. Pewnie w twoim przypadku lepszym wyjściem będą biblioteki DLL. Poszukaj w necie a znajdziesz.

Musisz też zrozumieć że jako że jesteś początkującym programistą, wielu rzeczy nie będziesz umieć. Nie staraj się pisać czegoś czego nie rozumiesz, ucz się kolejnych rzeczy, ale rozumiejąc to co jest pod tym i jak to działa.

0

Niestety autor wątku faktycznie chyba nie myśli do konca, a przynajmniej może mieć problemy z czytaniem. Ponieważ upewniłem się i wraz z instalką tych komponentów jest takie coś jak "Sample projects". Także wystarczy poświęcić chwilę czasu i przeanalizowac dołaczone przykładowe projekty. Na gotowca ode mnie już nie ma co liczyć. Te stare czasy wyręczania ludzi i tym samym szkodzenia im bardziej "pielęgnując" ich lenistwo się skończyły. Więcej rozpisywać się w tym wątku też nie ma senu, bo z tego co widzę wszystko zostało wyjaśnione. A może być też tak, że ktoś znowu później ktoś zarzuci "brak lakoniczności" :/

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