NukeBoards - Kreatywność przede wszystkim
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  DownloadDownload
RejestracjaRejestracja  ZalogujZaloguj

Odpowiedz do tematu
Poprzedni temat :: Następny temat
Generowanie prostej aplikacji konsolowej
Autor Wiadomość
iamiam 
Bohater


Pojedynki: tak
Pomógł: 1 raz
Posty: 60

7974 Prestiż
Wysłany: 20-05-2011, 20:01   Generowanie prostej aplikacji konsolowej

Nie, ten poradnik nie będzie miał większego sensu. Pokaże tutaj, jak zrobić w MMF2 (no, nie tylko) program, który wygeneruje malutką aplikację konsolową, która napisze komunikat, poczeka na naciśnięcie entera i się zamknie. Oczywiście wszystko w jednym pliku.

1. Najwpierwiej musimy utworzyć takową aplikację, ja zrobię ją w Delphi 2007, równie dobrze można ją wykonać w innych wersjach Delphi, Pascalu, czy C++ i innych. Kod w Delphi wyglądał będzie tak:

Kod:
program Temp;

{$APPTYPE CONSOLE}

var
x : PChar;

begin
x := 'Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi z tym =] Jestem inny i dobrze mi';
write(x);
readln;
end.

Inicjujemy zmienną typu PChar, bo zajmuje mniej miejsca niż string, i wypełniamy ją całym możliwym tekstem 255 znakowym (jeśli zrobimy to statycznie, przy deklaracji, aplikacja zajmuje ciut więcej). Następnie wpisujemy ją na ekran i czekamy aż użytkownik ciśnie w enter (może coś tam sobie jeszcze napisać). Jeśli nie chce się ci tego robić, ściągnij gotowy program: TUTAJ. Teraz otwórz to jakimś hex edytorem. Znajdź tekst zmiennej w pliku, zapisz pozycję jego początku (u mnie 34E4), i zastąp cały ten tekst wartościami #00 (tekst zamieni się w kropki). Otwórz kalkulator, Widok > Naukowy, Hex, wpisz pozycję początku tekstu (u mnie 34E4), i naciśnij na Dec. Zapisz sobie gdzieś tą liczbę (u mnie 13540), bo to w to miejsce będziemy wpisywać do pliku tekst. Zapisz aplikację, możesz ją uruchomić, powinna pojawić się pusta konsola i zamknąć po naciśnięciu entera.

2. Teraz stworzymy w MMF-ie aplikację, która tak-jakby stworzy tą że aplikację konsolową. Dodajemy 4 obiekty - Edit, Button, Binary, Common Dialog. Zwiększamy szerokość Edit-a, nie pozwalamy na automatyczne przewijanie (komunikat może zawierać maksymalnie 255 znaków). Nadajemy Button-owi napis "Zapisz aplikację", zmianiamy jego rozmiar i rozmiar aplikacji, tak aby wszystko dobrze wyglądało i ustawiamy Common Dialog na zapisywanie aplikacji (*.exe). Teraz plik "komunikat.exe" kopiujemy, najlepiej prosto na jakiś dysk, u mnie na dysk D, tak, by jego ścieżką była "D:\komunikat.exe". W MMF-ie klikamy prawym przyciskiem na naszej aplikcji, w oknie "Workspace Toolbar", i wybieramy z menu "Data Elements". Przechodzimy do zakładki "Binary data", klikamy przycisk "Add" i wybieramy naszą aplikcję "komunikat.exe". Jeśli na listę dodało się "D:\komunikat.exe" to wszystko jest git i możesz zamknąć już to okno. Teraz przejdź do zdarzeń aplikacji i utwórz następujące:
Cytat:
Button > Button clicked? --->>
  • // Pokazuje zapisywanie pliku ...
  • Common dialog > Show open dialog

Common Dialog > After open dialog --->>
  • // Wypakowywujemy aplikację
  • Special Conditions > Binary files > Extract binary file > D: \komunikat.exe
  • // Otwieranie aplikacji
  • Binary object > Load binary from file > BinFileTempName$(D:\komunikat.exe)
  • // Wpisywanie komunikatu w aplikację
  • Binary object > Replace Bytes > Set string at > Edittext$( Edit Box ) > 13540 (* tutaj zaczyna się tekst w aplikacji *)
  • // Zapisanie aplikacji
  • Binary object > Save binary to file > GetFilename$( Common Dialog object )
  • // Usunięcie wypakowanej aplikacji
  • Special Conditions > Binary files > Release binary file > D: \komunikat.exe


Teraz możesz zapisać aplikację MMF-owską, wygenerowana, nie potrzebuje już żadnych zewnętrzych plików. Tada, działa.
_________________
#define TRUE FALSE
 
     
Minty 
Stwórczyni
omc dr fizyki


Pojedynki: być może
Pomogła: 259 razy
Posty: 3445

33730 Prestiż
Wysłany: 20-05-2011, 20:16   

To się chyba szczególnie nadaje do programów użytkowych: tworzymy takowy w np. Delphi, a aplikacja w MMF2 robi za swojego rodzaju GUI.
 
     
iamiam 
Bohater


Pojedynki: tak
Pomógł: 1 raz
Posty: 60

7974 Prestiż
Wysłany: 20-05-2011, 20:49   

No nie wiem, czy do końca zrozumiałeś o co tu chodzi ;) Wpisuje się do edit-a tekst, który ma się wyświetlić w aplikacji, klika się na przycisk i aplikacja się tworzy. Po otworzeniu tej aplikacji, mamy wpisany wcześniej, w poprzedni program tekst. Czyli łopatologiczniej - takie "stworzenie działającej aplikacji", w aplikacji stworzonej w MMF-ie.
_________________
#define TRUE FALSE
 
     
Minty 
Stwórczyni
omc dr fizyki


Pojedynki: być może
Pomogła: 259 razy
Posty: 3445

33730 Prestiż
Wysłany: 20-05-2011, 21:39   

Czyli jakie jest właściwie potencjalne zastosowanie takiego programu klikowego? Bo ja widzę tylko ładną integrację z programem konsolowym w formie GUI.
 
     
iamiam 
Bohater


Pojedynki: tak
Pomógł: 1 raz
Posty: 60

7974 Prestiż
Wysłany: 20-05-2011, 21:57   

Oprócz wpisywania danych do innego exeka, to żadne :)
_________________
#define TRUE FALSE
 
     
Kira 
Starszy szeregowy


Posty: 10

102 Prestiż
Wysłany: 31-05-2011, 18:12   

Nie lepiej tak:
1.Tworzymy nowy projekt w MMF2.
2.Wstawiamy obiekt console.
3.W opcjach projektu ustawiamy "Hidden at start".
4.Dodajemy Zdarzenie "Start of frame >> Open console, Write string 'LoL' ".

Co do Twojego sposobu to w końcu tym komuś kompa rozwalisz ^^ .

Tekst nie zawsze będzie występował na pozycji 13540 to zależy od kompilatora i długości tekstu.

Albo wstaw tekst o długości 2mb do pliku 1 mb co zapewne zakryjesz sekcje pliku co spowoduje crash aplikacji.

Poczytaj pierw o budowie plików portable executable (.exe).
 
     
iamiam 
Bohater


Pojedynki: tak
Pomógł: 1 raz
Posty: 60

7974 Prestiż
Wysłany: 01-06-2011, 19:43   

Nie, chciałem tylko pokazać jak to zrobić w innej aplikacji, że pliki .exe można swobodnie edytować tak jak i każde inne.

Kira napisał/a:
Tekst nie zawsze będzie występował na pozycji 13540 to zależy od kompilatora i długości tekstu.

iamiam napisał/a:
Znajdź tekst zmiennej w pliku, zapisz pozycję jego początku (u mnie 34E4)
:)

Plik się nie zepsuje, bo w editboxie nie mieści się nawet te 255 znaków, o to się nie martw. ;)
_________________
#define TRUE FALSE
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

PSK Cytaty Klikibaza - kopia wszystkich klików Klikipedia - encyklopedia o tworzeniu gier Discord KlikCzat Zaproszenie
Daj piniondza Wielkie Muzeum Klikowe

Powered by phpBB modified by Przemo © 2003 phpBB Group