Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano
Po co pisać na Windowsa, skoro z poprzednimi wersjami jest niekompatybilny? :D

 

Jeśli piszesz to w Delphi (dafuq, nie powiem) to kompiluj statycznie (jeśli dobrze wiem co to znaczy :D)

 

Fervi

wut? Kto Ci tak powiedział?

  • Odpowiedzi 69
  • Dodano
  • Ostatniej odpowiedzi

Top użytkownicy w tym temacie

Top użytkownicy w tym temacie

Opublikowano

Chociażby niekompatybilności w sterownikach między Windows 7 a Windows 8

 

Compi powinien zrobić Kacz De Klałna na Windows 8, to byłby hit sezonu, bo takie gry się nadają na ten nowy Modern UI

 

Fervi

Opublikowano

W większości - ok

 

Problem w tym, że Windows ani się nie rozwija, ani nic - takie ble, więc nie rozumiem braku niekompatybilności

 

Fervi

Opublikowano

To nie temat o Windowsach, więc koniec dyskusji.

 

Co do Slapa, to mam pomysł jak zrobić środowisko(?) WYSWIG to operowania wizualnymi komponentami.

To by było coś :]

Opublikowano
W sensie auto-generowanie kodu przez designer?

To by było super :D

 

BTW. Język będzie obiektowy czy strukturalny (czy może oba na raz)?

Oba naraz

Designer generuje kod.

Każda akcja wykonana na formie ma swoje id.

Każdy element ma swoje id

Slap wykonuje nieskończoną pętle, rejestrując wiadomości z form i wykonuje napisany przez nas kod.

 

Podobnie działa delphiak. Nikt nie widział pewnie pętli WndProc, ale ona jest

Opublikowano

Jak rozkminię działanie libów pod uxem i sam owego uxa będę miał, to wersja pod linuxa powstanie.

Co do wersji pod Windowsa, to planuje dodać pełne wsparcie SDL

Opublikowano
Nie lepiej SFML? Ładny, obiektowy i prosty.

 

Skoro będzie można używać natywnych dll'i to mogę przerobić DotNetGMCrossover na twój język jeśli znajdę czas.

 

Nie ma nic w stylu Canvasa w HTML5?

 

Jeżeli chodzi o twoją dllkę, to powiedz mi, czy argumenty są układane na stosie w stylu stdcall?

Jeśli tak to nic nie trzeba przerabiać :)

Opublikowano
Nie ma nic w stylu Canvasa w HTML5?

 

Jeżeli chodzi o twoją dllkę, to powiedz mi, czy argumenty są układane na stosie w stylu stdcall?

Jeśli tak to nic nie trzeba przerabiać :)

Źródła są dołączone. Zresztą spójrz na skrypty w gml jak wywoływana jest funkcja i spokojnie przeniesiesz to na Slapa.

Gdybyś potrzebował innych typów niż char* i double to pisz.

Jak chcesz mogę już od razu skompilować binarkę na .NET 4, bo 4.5 nie ma na XP.

 

Konkretnie to najpierw czyścisz listę z argumentami (ClearArguments), wrzucasz po kolei argumenty funkcjami "AddStringArgument" i "AddRealArgument", później wywołujesz "StringMethod" lub "RealMethod" (w zależności co zwraca) i voila.

Opublikowano

W slapie jest limit pięciu argumentów w wywołaniu call nazwa(arg1,arg5).

Ale w natywnym kodzie jest limit 20 argumentów, które są umieszczne w wirtualnych rejestrach RG0..RG19 i odkładane na stosie od najstarszego do najmłodszego.

Opublikowano

Najlepiej integer.

Jeśli to będzie string to niech zwraca wskaźnik

 

@EDIT:

 

zwracany typ (ty_string lub ty_real)

 

Ten argument w dotnet_method to string?

 

@@EDIT:

 

Stary, nawet nie wiesz jak ci dziękuję. Teraz Slap będzie mógł korzystać z .NET Frameworka :)

Opublikowano
Najlepiej integer.

Jeśli to będzie string to niech zwraca wskaźnik

 

@EDIT:

 

 

 

Ten argument w dotnet_method to string?

char*

gm to traktuje jako string

źle zrozumiałem.

gml sprawdza czy dałeś tam ty_real czy ty_string i wywołuje odpowiednią funkcję z dll'a

Po prostu wpisujesz ty_real bądź ty_string, w zależności jaki typ jest zwracany, tak jak przy definiowaniu zwykłych dll (external_define) w gm.

Obczaj zresztą skrypt ;p

 

@EDIT Tak wgl to sprawdzałeś czy działa w slapie ten dla GM'a?

@@EDIT:

 

Stary, nawet nie wiesz jak ci dziękuję. Teraz Slap będzie mógł korzystać z .NET Frameworka :)

Czyli działa? :)

 

 

@EDIT Skończyłem :D

 

Link: https://gmclan.org/up8194_3_DotNetSlapCrossover1_0.html

W środku binarki dla .NET 4 oraz 4.5, source oraz przykłady. Testowałem importowanie funkcji przez P/Invoke w c# bo już mnie denerwowało cpp ;p (czyli zarządzany program odwoływał się do mieszanej biblioteki która z kolei odwoływała się do dynamicznie ładowanego, zarządzanego dll)

 

Dodałem więcej typów do wykorzystania(kwestia dopisania paru linijek). Poniżej lista typów oraz ich odpowiedników w .NET.

Nie zapomniałem oczywiście o LPVOID. W .NET to System.IntPtr.

char* to System.String.(tego też nie ma w tej tabelce)

w7ekj5.png

 

Tutaj taka lista co możesz zaimportować (wycinek z kodu):

//#########################
//AUTHOR OF DLL: Utermiko #
//#########################

#define EXPORT extern "C" __declspec(dllexport)

EXPORT int LoadDll(char* path);
EXPORT int CreateObject(int assemblyId, char* namespaceAndClass);
EXPORT int RemoveObject(int objectId);

EXPORT int ClearArguments();
EXPORT int AddStringArgument(char* value);//System.String
EXPORT int AddCharArgument(char value);//System.SByte
EXPORT int AddUCharArgument(unsigned char value);//System.Byte
EXPORT int AddDoubleArgument(double value);//System.Double
EXPORT int AddFloatArgument(float value);//System.Float
EXPORT int AddIntArgument(int value);//System.Int32
EXPORT int AddUIntArgument(unsigned int value);//System.UInt32
EXPORT int AddShortArgument(short value);//System.Int16
EXPORT int AddUShortArgument(unsigned short value);//System.UInt16
EXPORT int AddLongArgument(long value);//System.Int64
EXPORT int AddULongArgument(unsigned long value);//System.UInt64
EXPORT int AddLPVOIDArgument(LPVOID value);//System.IntPtr

EXPORT char* InvokeStringMethod(int objectId, char* methodName);//System.String
EXPORT char InvokeCharMethod(int objectId, char* methodName);//System.SByte
EXPORT unsigned char InvokeUCharMethod(int objectId, char* methodName);//System.Byte
EXPORT double InvokeDoubleMethod(int objectId, char* methodName);//System.Double
EXPORT float InvokeFloatMethod(int objectId, char* methodName);//System.Float
EXPORT int InvokeIntMethod(int objectId, char* methodName);//System.Int32
EXPORT unsigned int InvokeUIntMethod(int objectId, char* methodName);//System.UInt32
EXPORT short InvokeShortMethod(int objectId, char* methodName);//System.Int16
EXPORT unsigned short InvokeUShortMethod(int objectId, char* methodName);//System.UInt16
EXPORT long InvokeLongMethod(int objectId, char* methodName);//System.Int64
EXPORT unsigned long InvokeULongMethod(int objectId, char* methodName);//System.UInt64
EXPORT LPVOID InvokeLPVOIDMethod(int objectId, char* methodName);//System.IntPtr

 

 

@EDIT Nie zapomnij użyć "ClearArguments" przed dodawaniem argumentów do wywołania innej metody. Najczęściej na tym można się złapać :P

@EDIT2 Jeszcze jedno. Przy "LoadDll" trzeba podawać PEŁNĄ ścieżkę.

@EDIT3 Nie testowałem wszystkich funkcji Invoke... i Add... , ale powinny działać.

Opublikowano

Ja proponuję, byś napisał to w .Not 2.0, bo:

- Większość ma Not 2.0

- Kopatybilny z Mono

- .Not 4.0 / 4.5 to 8'ka lub update 7'ki

 

Fervi

Opublikowano
Ja proponuję, byś napisał to w .Not 2.0, bo:

- Większość ma Not 2.0

- Kopatybilny z Mono

- .Not 4.0 / 4.5 to 8'ka lub update 7'ki

 

Fervi

Tyle, że .NET 2 w porównaniu do .NET 4 ma bardzo małe możliwości. To nie tylko rozszerzenie o kilka klas.

Do tego po co używać przestarzałego oprogramowania skoro i tak nieliczne osoby używają win 2000 i starsze systemy.

 

.NET 4 to xp, vista, 7 i 8.

.NET 4.5 to 7 i 8 (i vista jeszcze chyba)

 

.NET 4.5 jest i tak tylko rozszerzeniem 4 o parę przydatnych klas i innych dupereli. CLR dalej jest ten sam.

 

 

To jest napisane w C++/CLI, a Mono chyba tego nie obsługuje.

Jak chcesz to się baw w portowanie na Mono. Dołączyłem source przecież.

 

PS. Jak piszesz "Not" to nie jesteś fajny.

 

@EDIT Compi, tak z ciekawości. Po co Ci LPVOID? Jakieś specyficzne zastosowanie?

Na językach zarządzanych wskaźniki przydają się wg. mnie tylko przy importowaniu natywnych dlli.

Opublikowano
Tyle, że .NET 2 w porównaniu do .NET 4 ma bardzo małe możliwości. To nie tylko rozszerzenie o kilka klas.

Do tego po co używać przestarzałego oprogramowania skoro i tak nieliczne osoby używają win 2000 i starsze systemy.

 

.NET 4 to xp, vista, 7 i 8.

.NET 4.5 to 7 i 8 (i vista jeszcze chyba)

 

.NET 4.5 jest i tak tylko rozszerzeniem 4 o parę przydatnych klas i innych dupereli. CLR dalej jest ten sam.

 

 

To jest napisane w C++/CLI, a Mono chyba tego nie obsługuje.

Jak chcesz to się baw w portowanie na Mono. Dołączyłem source przecież.

 

PS. Jak piszesz "Not" to nie jesteś fajny.

 

@EDIT Compi, tak z ciekawości. Po co Ci LPVOID? Jakieś specyficzne zastosowanie?

Na językach zarządzanych wskaźniki przydają się wg. mnie tylko przy importowaniu natywnych dlli.

 

Bo to jest technologia .Not

 

Ja tam nie wiem co Compi chce, ale z tego co wiem to planuje port na Linuksa, a tam Mono

 

Fervi

Opublikowano
Bo to jest technologia .Not

Tyle, że to nie jest nawet w najmniejszym stopniu śmieszne :P

Nie musisz publicznie przedstawiać swojego wstrętu do MS. (w następnym poście fervi napisze M$).

 

Ja tam nie wiem co Compi chce, ale z tego co wiem to planuje port na Linuksa, a tam Mono

W jaki sposób chcesz to osiągnąć? Pod Mono da się odpalić binarki C++/CLI?

Opublikowano

Panowie, kłócicie się jak dzieci.

LPVoid potrzebny jest do wewnętrznej struktury Slapa, gdzie wykorzystuje wskaźniki do wołania zew. funkcji.

  • 3 tygodnie później...
Opublikowano

Właśnie pracuję nad nową wersją Slapa.

Teraz jest w stanie wykonać 363 linie kodu na sekunde :)

 

Od następnej wersji zmienne będą musiały zaczynać się od $

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...