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:około 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:około 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:około 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ć.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)