Kompilator Delphi w Delphi

0

Zna ktoś komponent który po uruchomieniu programu kompliluje to co jest w edicie np? Czyli tak jak w temacie.

0

watpie, zeby byl taki komponent ;>

0

Ogólnie chodzi mi o cos typu:
robie program w któ¶ym (w edit) wpisuje np showmessage(blabla) A po kliknieciu buttona tworzy mi jeszcze jeden plik exe który po uruchomieniu ma w sobie tylko ten kod(oprócz podstawowego.)

0

ja również wątpię, aby był taki komponent. Ale możesz zrobić tak, że w swoim programie edytujesz kod, zapisujesz go do pliku, a następnie wywołujesz spod swojego programu kompilator konsolowy z odpowiednimi parametrami i tworzysz execa.

0

Też tak myślałem jednak nie wiem jak konsolówke(kompilator uruchomić.

0
  1. ShellExecute
  2. nazwa kompilatora Delphi to dcc32, ścieżka do niego jest w Path
  3. listę opcji dostaniesz, jeśli w oknie linii poleceń wpiszesz: dcc32 /?
    w szczególności polecałbym rzucić okiem na: -E oraz -Q
0

Jest coś takiego... Co wykonuje kod pascala wpisany podczas pracy programu... Ale że płatne to tylko pamiętam że jest. ;)

0

Jest cos takiego. Nie wiem czy płatne. Było kiedyś na jednej ze stron o delphi (delphi bajo chyba). Teraz ta strona juz nie istnieje. Pamiętam, że był to zestaw komponentów docelowo do obsługi skryptów w języku pascal w aplikacjach napisanych w Delphi.

0

Mógłby ktoś pomóc mi to odnaleść?

0

Alternatywnie mozesz pokombinowac ze skryptami LUA (skladnia podobna do pascala, tylkoze musisz napisac sobie funkcje i procedury ;p).
Przykład wykorzystania (niestety w C++) :
http://opentibia.svn.sourceforge.net/viewvc/opentibia/otserv/trunk/?sortby=date#dirlist

0

jestem dojść początkująct musze tylko napisać to co wyżej opisałem. Nie mówcie mi nic o innych językach bo nic zupełnie nie wiem</ort>

0

Sprawdź, bo coś mi sie kolebie w pamięci, że Jedi ma takie ustrojstwo do interpretowania pascala.

0

Od razu mówię że nie sprawdzałem tego w działaniu. Ale założenia się zgadzają:

http://www.remobjects.com/page.asp?id={9A30A672-62C8-4131-BA89-EEBBE7E302E6}

Ps. Czyli już przynajmniej dwa takie komponenty... Bo tego o którym wspomniałem wcześniej znaleźć nie mogę...

0
WIktorDelphi napisał(a)

Jest cos takiego. Nie wiem czy płatne. Było kiedyś na jednej ze stron o delphi (delphi bajo chyba). Teraz ta strona juz nie istnieje. Pamiętam, że był to zestaw komponentów docelowo do obsługi skryptów w języku pascal w aplikacjach napisanych w Delphi.

Również byłbym szczęśliwy, gdyby ktoś pomógł mi (nam) to znaleźć.

Edycja:
Nie zauważyłem drugiej strony, dzięki wielkie. :)

0

Jest też takie coś jak Inno Pascal.

0

Inno Pascal chyba inno source maker omg

np. przycisk kompiluj ale kompilacji nie bedzie

if pos('showmessage(',lowercase(edit1.text))>0 then if
if pos(');',lowercase(edit1.text)) >0 then
showmessage(get_text_between('(',')',edit1.text);

function get_text_between(b1, b2, original_str : string) : string;
var
i : integer;
lol : string;
begin
result := '';
lol := lowercase(original_str);
b1 := lowercase(b1);
b2 := lowercase(b2);
if not pos(b1,lol) > 0 then exit;
if not pos(b2,lol) > 0 then exit;
delete(original_str,1,pos(b1,lol)+length(b1)-1);
delete(lol,1,pos(b1,lol)+length(b1)-1);
delete(original_str,pos(b2,lol),length(original_str));
result := original_str;
end;

///a tak na serio zoboczyliscie z tematu

teraz coś na temat parserów dla istniejących już języków

jak mamy juz dorobionie tworzenie zmiennych itp. możemy wziąć się za parsowanie kodu np. Delphi (bierzmy i parsujemy funkcje) poźniej dajemi if pos(nazwa funkcji) >0 wtedy (pobieramy zmiene sprawdzamy do czego sie odwoluja) nazwafunkcji(i zmienne), tak to wyglada jak chcemy w pelni miec dzialajacy kod z obsluga wszystkich procedur (ale i tak pewnie wszystkiego tak sie nie da przeleciec)

0

Może mi ktoś przetłumaczyć na polski to co napisał pan wyżej?

0

Szczerze? Nie mam pojęcia... :D

A co do zboczenia z tematu - chodziło o wykonywanie kodu z uruchomionego programu... A rozwiązanie które podałem właśnie tak działa. Chyba że masz inne pojęcie zejścia z tematu. :P

0

Kolega chciał chyba powiedzieć coś na temat pisania własnego parsera, ale chyba kilka piw za dużo wypił. Szczególnie poniższy fragment mi się spodobał:

np. przycisk kompiluj ale kompilacji nie bedzie

Nie wiem, co chciał powiedzieć przez:

dorobionie tworzenie zmiennych itp.
, ale może napiszę jak ja parser zrobiłem:

  1. wstępny podział na podstawie znaków końca instrukcji i słów kluczowych.
  2. zamiana kodu na strukturę drzewiastą, żeby było wiadomo, który blok jest w którym, jakie są zasięgi itp
  3. dokładna tokenizacja wszystkich instrukcji po kolei
  4. zamiana wyrażeń na ONP - w tym momencie wywołania funkcji, procedur i zwracanie wyników przez w/w zrobi się niejako przy okazji ;)
    3a. wstępna optymalizacja, bo ONP to generuje tyle operacji na stosie, że przynajmniej 3/4 można odpowiednio zwinąć
  5. zamiana drzewa na strukturę liniową, a więc odpowiednie rozpisanie pętli, ifów itd na instrukcje skoków
  6. i zamiana całego tego cholerstwa na bytecode

Kolejność niektórych punktów dowolna. Mi pierwsze 3 punkty dla języka C++ rozwinęły się w 2000 linii kodu, więc pisania parsera realnego języka nie polecam. Zresztą to jest śmiech: Pascal, to nie jakiś tam sobie proceduralny język skryptowy. Albo skorzystasz z zewnętrznego kompilatora (albo ewentualnie z gotowego komponentu) albo masz kilka lat z życiorysu, żeby to samodzielnie zrobić.

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