[Delphi] -Dodanie kodu do programu, on/ off programu i kopii

[Delphi] -Dodanie kodu do programu, on/ off programu i kopii
IN
  • Rejestracja:około 16 lat
  • Ostatnio:ponad rok
0

Kontynuacja merytoryczna tematu z http://4programmers.net/Forum/530010#id530010

Jak mając napisany Delphi 2007 (żeby nie zaciemniać obrazu):
Program_Zrodlowy.exe i Program_Uaktualniajacy.exe
zrobić żeby

3.a) Program_Zrodlowy.exe uruchomił Program_Uaktualniajacy.exe;

3.b) Program_Uaktualniajacy.exe skopiował Program_Zrodlowy.exe i dodał funkcję w module Unit2,
aby była dostępna również z Unit1 Program_Zrodlowy.exe-ka; jakby też można było dodać cały
moduł Unit3 z procedurami.
To dodawanie tak bezpośrednio do execa ale i może byc przez "zdalną" kompilację.

3.c) Program_Uaktualniajacy.exe uruchamia kopie do Program_Zrodlowy_1.exe.

3.d) Program_Uaktualniajacy.exe przekazuje info do Program_Zrodlowy.exe aby się zamknął
i go kasuje a sam się zamyka i ewentualnie kasuje.

3.e) Program_Zrodlowy_1.exe wydaje polecenie aby Program_Uaktualniajacy.exe się zamknął
i go kasuje.

P.S. Chciałem doprowadzić do tego, żeby Program_Zrodlowy.exe sam się uaktualniał przez przygotowane przez siebie uaktualnienie bez ingerencji użytkownika dlatego na forum równolegle zamieściłem inną część tego tematu.
Prędzej czy później temat rozgryzę ale wolałbym prędzej ;)

Pytam o jakiś nawet najprostszy przyczółek, a potem się zobaczy każde info czy link na wagę.. wiedzy :)

0

Pfff...
Wyślij klientowi kompilator i źródło i skompiluj....
Wiesz w ogóle czym się różni kod źródłowy od binarki ( plik .exe, choć w win32 jest to obraz pliku wykonywalnego w któym kod potrafi być mniejszością =] ) ?

IN
  • Rejestracja:około 16 lat
  • Ostatnio:ponad rok
0

Z grubsza wiem..
Wiem też że są programy które są odwrotnością kompilatora. A skoro ktoś takie cacka napisał więc ...
Jak bedę musiał to zejdę do poziomu Win_API albo asemblera ale czasami ludzie znają różne sztuczki więc może przypadkiem ... :) nie bedę musiał wyważać otwartych drzwi.

0

=|
Nie chcę Cię obrazić czy coś w tym stylu ale mi to zalatuje całkowitym bezsensem, żeby takie coś robić musiałbyś mieć kompilator i dekompilator/źródło na miejscu. Czy nie prościej wysłać klientowi nowego exe'ka?

IN
  • Rejestracja:około 16 lat
  • Ostatnio:ponad rok
0

Spoko. Jako pierwszą wersję można by sobie na razie odpuścić.

Przesyłania uaktualnienia chciałbym uniknąć, ponieważ w grę wchodzą duże pliki, ale... ale... program uaktualniający może mieć informacje które fragmenty starego pliku wynikowego usunąć lub zmienić i gdzie wstawić nowe... a to już jakiś procent KB zaoszczędzone tym bardziej że aplikacja ma się ciągle rozwijać.

Jednak w takim układzie zapraszam do tematu http://4programmers.net/Forum/530010#id530010

Chodzi mi o to aby exe-k w taki czy inny sposób sam się rozbudowywał (siebie lub swoje DLL i inne pliki)

0

Wiesz że w .NET da się w dowolnym momencie wstawić dowolny kod w dowolne miejsce ? =]
Kompilator jest razem z frameworkiem dostarczony i potem tylko się robiło drobny hokus pokus i kod się wykonywał, zgubiłem link do przykładu ( a był bardzo krótki jak na takie coś ) ale powinno się dość łatwo znaleźć.

b0bik
  • Rejestracja:około 22 lata
  • Ostatnio:28 dni
  • Postów:1112
0

Dziwny wątek. Nie spotkałem się z taką realizacją aktualizacji w praktyce. Najlepiej użyć bibliotek dll, jak podzielisz funkcjonalności na biblioteki - to wystarczy podmienić jedną odpowiedzialna za daną funckję. Exe to tylko szkielet, cała merytoryka siedzi w dll'ach. Co do dużego exe'ka - asp, upx ...

0

Umieść w bibliotece dll funkcje zwracającą ilość funkcji w danej bibliotece w ten sposób będziesz miał kompatybilność wsteczną. Starszą wersją powinno się dać uruchamiać nowsze dll'ki Na forum i na głownej znajdziesz w jaki sposób uruchamiać dynamicznie funkcje i procedury w dll'ach. Innne "nadpisywania" są bezsensowne, Bobik podszedł dobrze do tego tematu.

IN
  • Rejestracja:około 16 lat
  • Ostatnio:ponad rok
0

Dla mnie też brzmi to logicznie, ale na którymś etapie może być to za mało, może to jakoś ominę ;)
A wie Ktoś coś na temat http://4programmers.net/Forum/viewtopic.php?id=141337
?

SZ
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 15 lat
  • Postów:3356
0
Integers napisał(a)

Przesyłania uaktualnienia chciałbym uniknąć, ponieważ w grę wchodzą duże pliki, ale... ale... program uaktualniający może mieć informacje które fragmenty starego pliku wynikowego usunąć lub zmienić i gdzie wstawić nowe

Ale... ale... slyszales moze o czyms takim jak DIFF oraz patche roznicowe?

Moze tez nie do konca zdajesz sobie sprawe z tego, jakiej jakosci i zawartosci kod daje dekompilacja. Moja rada: napisz w Delphi prosty program, skompiluj, zdekompiluj, dodaj funkcjonalnosc (recznie) i skompiluj ponownie. Zastanow sie, ile pracy Cie to kosztowalo i w jakim (jak malym) stopniu mozesz to zautomatyzowac? ... i czy w ogole warto do klienta dostarczac cos innego niz pliki binarne.

A jak chcesz miec jeszcze wiekszy wplyw na dynamike budowy aplikacji podczas wykonania, zmien jezyk programowania (czy na .NET czy na Java, zaleznie od Twoich preferencji). Architektura takich programow (w tym w postaci binarnej) jest odmienna i pozwala na wieksza swobode.


Dzięki wszystkim forumowiczom za lata wspólnych dyskusji; miłej zabawy w programowanie!
Sławomir "Szczawik" Włodkowski
BS
  • Rejestracja:około 18 lat
  • Ostatnio:prawie 15 lat
0

Stworz sobie jakis prosty patcher, a pobieraj tylko plik w ktorym bedziesz mial zapisane co i gdzie spatchowac..
No i funkcje trzymaj w dll'kach np. a do rozszerzania mozliwosci to stworz sobie system pluginow..

IN
  • Rejestracja:około 16 lat
  • Ostatnio:ponad rok
0

Dzięki Wszystkim za podpowiedzi.

Chociaż inaczej to sobie wyobrażałem, ale w gruncie rzeczy efekt jest taki sam :).
Do czytam jeszcze o pluginach.. z przeszłości wiem że bibloteki nie zawsze były elastyczne ale na początek... a może mi po prostu nie wszystko wychodziło..

Jeszcze raz dzieki

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)