Compi Opublikowano 6 Lutego 2013 Autor Udostępnij Opublikowano 6 Lutego 2013 A jak poszło z .NET'ową libką? Działa czy coś nie tak? Nie tak jest to, że export musi stdcall. Jeśli masz czas, to przekompiluj to, bo jest problem z wywołaniem dlla w Slapie. Oczywiście dziękuję. Od teraz do zmiennej można przypisywać funkcje: GML var $x def (magia); $magia:="To czary"; return $x:=call magia(); %echo $x Slap wyświetli: To czary Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 6 Lutego 2013 Udostępnij Opublikowano 6 Lutego 2013 Teraz używa stdcall: https://gmclan.org/up8194_3_DotNetSlapCrossover1_0_fixed.html @EDIT Gdyby nie działało to oprócz .NET frameworka zainstaluj to: http://www.microsoft.com/en-us/download/de...s.aspx?id=30679. Gdyby były jeszcze jakieś problemy z użyciem czy coś to pisz :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 6 Lutego 2013 Autor Udostępnij Opublikowano 6 Lutego 2013 Ostatnia prośba :] GML EXPORT int CALLING_CONVENTION AddStringArgument(char* value);//System.String EXPORT int CALLING_CONVENTION AddCharArgument(char value);//System.SByte EXPORT int CALLING_CONVENTION AddUCharArgument(unsigned char value);//System.Byte EXPORT int CALLING_CONVENTION AddDoubleArgument(double value);//System.Double EXPORT int CALLING_CONVENTION AddFloatArgument(float value);//System.Float EXPORT int CALLING_CONVENTION AddIntArgument(int value);//System.Int32 EXPORT int CALLING_CONVENTION AddUIntArgument(unsigned int value);//System.UInt32 EXPORT int CALLING_CONVENTION AddShortArgument(short value);//System.Int16 EXPORT int CALLING_CONVENTION AddUShortArgument(unsigned short value);//System.UInt16 EXPORT int CALLING_CONVENTION AddLongArgument(long value);//System.Int64 EXPORT int CALLING_CONVENTION AddULongArgument(unsigned long value);//System.UInt64 EXPORT int CALLING_CONVENTION AddLPVOIDArgument(LPVOID value);//System.IntPtr</span></span> Bardzo by mi ułatwiło życie, gdyby argumenty tych funkcji były char* Ja nie mam kompilatora na kompie, a w slapie jest jeden typ zmiennych, właśnie string. Można też używać int, ale trzeba przerobić zmienną przez __INT@@ @EDIT Jeśli można, to żeby InvokeMethod w każdym przypadku zwracało char* Jeszcze raz dziękuję :] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 6 Lutego 2013 Udostępnij Opublikowano 6 Lutego 2013 Mogę zrobić, ale czy nie lepsza by była konwersja po stronie Slapa? @EDIT Funkcje LoadDll, CreateObject, RemoveObject, Add***Argument też mają zwracać char* czy zostawić int? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 6 Lutego 2013 Autor Udostępnij Opublikowano 6 Lutego 2013 Mogę zrobić, ale czy nie lepsza by była konwersja po stronie Slapa? @EDIT Funkcje LoadDll, CreateObject, RemoveObject, Add***Argument też mają zwracać char* czy zostawić int? char* Dziwnie eksportuje twój kompilator, zamiast LoadDll muszę importować _LoadDll@4 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Utermiko Opublikowano 6 Lutego 2013 Udostępnij Opublikowano 6 Lutego 2013 Dobra, to zostawię obecne funkcje i zrobię aliasy z dopiskiem AsCharPtr które konwertują każdy typ. Nie wiem co może być przyczyną, że musisz coś tam dopisywać. Mi normalnie się importuje przez P/Invoke z C#. @EDIT Proszę https://gmclan.org/up8194_3_DotNetSlapCross...1_0_fixed2.html. Wszystkie funkcje z dopiskiem AsCharPtr przyjmują i zwracają char* oprócz funkcji związanych ze wskaźnikami (LPVOID). Pamiętaj, że to wszystko odbywa się kosztem wydajności. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 7 Lutego 2013 Autor Udostępnij Opublikowano 7 Lutego 2013 Dzięki Utermiko, Slap został wzbogacony o obsługe bibliotek z .Net Frameworka. Przykładzik: GML %import dotnet% def (entry); call LoadDll("C:\\net.dll",); call ClearArguments(); call AddDoubleArgument(6,); call AddStringArgument(moja wiadomosc,); call CreateObject($LoadDll,"ManagedDllTest.TestClass",); call ClearArguments(); call InvokeStringMethod($CreateObject,MessageBoxNoParametr,); @EDIT: Slap jest już w stanie osiągnąć prędkość 2000 kroków na sekundę. Sukces! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 9 Października 2013 Autor Udostępnij Opublikowano 9 Października 2013 Panowie, sorry za odkop. Od kilku dni pracuję nad nową wersją języka. Już wszystko nie będzie stringiem. Staram się zachować zbieżność zmiennych z tymi natywnymi znanymi z C bądź Pascala. Wszystko jest w fazie wczesnego rozwoju, ale już wspiera całe Windows API dzięki asemblerowym wstawkom w kodzie maszyny wirtualnej. Dzięki doświadczeniom z pisania Slapa, kod jest bezpieczniejszy oraz uniknąłem wielu błędów, których naprawa później byłaby praktycznie niemożliwa. Kod nowego, świeżego języka istnieje już dwa dni i póki ma do zaoferowania Wszelkie rodzaje zmiennych i wskaźników (prócz floatów, pracuje nad niskopoziomową implementacją FPU) Wszelkie rodzaje wywołań funkcji Wymiana stringów między bibliotekami bez potrzeby używania dodatkowych bibliotek (typu ShareMem, dynlibs) Oraz (nie pamiętam jak się nazywało takie typowanie) każda zmienna może zmienić swój typ podczas wykonywania programu (wspaniała usługa alokacji i wskaźników bez obciążania prawdziwego bufora zmiennych) Na razie nie ma co pokazywać, bo w sumie translator obsługuje kilka słów, a bytecode nie jest niczym do chwalenia. Do zrobienia zostało: Wszelkiego typu iteracje (no problemo) Tablice srablice (te no problemo) Klasy i obiekty (no tu jest problem bo nie uczą tego nigdzie i trzeba ładnie to zrobić) Kompilacja do wolnostojącego exe (no problemo) Obsługę błędów kompilacji (problemo) Ładne IDE (problemo) i coś jeszcze tam... Macie może jakiś pomysł na nazwę? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 28 Marca 2014 Autor Udostępnij Opublikowano 28 Marca 2014 GML #import main.tpz proc main(1); array tab[10000];int $cc; $cc="%i "; main.arg0 = 0; while main.arg0 == 9999 tab[main.arg0] = main.arg0; printf($cc,tab[main.arg0]); main.arg0=eval(main.arg0+1); endwhile printf($cc,tab[56]); end Obsluguje całe C standard library i portuje jeszcze Delphi stdlib Nie wiem jak obiektowosc dodac :$ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Compi Opublikowano 2 Kwietnia 2014 Autor Udostępnij Opublikowano 2 Kwietnia 2014 GML #import main.tpz class string; _self.init(0); proc _self.puts(0); puts(_self); end proc _self.init(0) int _self; _self=" "; endclass; proc main(0); object $i:string; object $i2:string; $i="Jestem obiektem!;)"; $i2="Jestem obiektem! nr.2;)"; $i.puts(0); $i2.puts(0); pause(0); Udalo mi sie wkoncu dodac klasy, gdzie obiekty są jednoczesnie wartosciami. btw. Nadal nie mam nazwy :/ Jakies pomysły? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę