Kompilator Delphi w Delphi

Kompilator Delphi w Delphi
P9
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 7 lat
0

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

KU
KU
  • Rejestracja:około 19 lat
  • Ostatnio:prawie 5 lat
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.)

LU
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 11 lat
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ć.

Ranides
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 9 lat
  • Postów:892
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
_Nex_
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 15 lat
  • Postów:507
0

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


Program to zbiór zer i jedynek ułożonych tak, żeby denerwować użytkownika.
WIktorDelphi
  • Rejestracja:prawie 19 lat
  • Ostatnio:prawie 17 lat
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.


<img src="http://www.drajwer.iglu.cz/syg/display.php?id=113" alt="user image" />
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>

Qyon
  • Rejestracja:około 21 lat
  • Ostatnio:około 14 lat
0

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


JKM czy HGW?
_Nex_
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 15 lat
  • Postów:507
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ę...


Program to zbiór zer i jedynek ułożonych tak, żeby denerwować użytkownika.
Qyon
  • Rejestracja:około 21 lat
  • Ostatnio:około 14 lat
0

JKM czy HGW?
OR
  • Rejestracja:prawie 19 lat
  • Ostatnio:około 17 lat
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. :)

Coldpeer
Moderator
  • Rejestracja:ponad 19 lat
  • Ostatnio:około rok
  • Lokalizacja:Londyn
0

Jest też takie coś jak Inno Pascal.


<font size="1">Jeśli starasz się, by Twój system był idiotoodporny, zawsze znajdzie się idiota, który jest bardziej pomysłowy od Ciebie.</span>
KD
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 15 lat
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)

OR
  • Rejestracja:prawie 19 lat
  • Ostatnio:około 17 lat
0

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

_Nex_
  • Rejestracja:ponad 19 lat
  • Ostatnio:ponad 15 lat
  • Postów:507
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


Program to zbiór zer i jedynek ułożonych tak, żeby denerwować użytkownika.
Ranides
  • Rejestracja:około 19 lat
  • Ostatnio:ponad 9 lat
  • Postów:892
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ć.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.