Skocz do zawartości

[sense script] Testy


Polecane posty

Jakiś czas temu chciałeś, żeby ktoś przetłumaczył pewien kod na C++

 

#include <iostream>
using namespace std;
#include <windows.h>

typedef void (*voidchar)(char*);
typedef void (*voidvoid)();
typedef int (*intvoid)();
typedef char* (*charint)(int);
typedef bool (*boolvoid)();

int main()
{
   HMODULE hModule = LoadLibrary ("sense_script.dll");
   if (hModule == NULL)
   {
       cout << "Nie udalo sie wczytac dll" << endl;
       return 1;
   }
   boolvoid IsDone = (boolvoid)(GetProcAddress (hModule, "IsDone"));
   voidvoid _Prepare = (voidvoid)(GetProcAddress (hModule, "_Prepare"));
   voidvoid _Exec = (voidvoid)(GetProcAddress (hModule, "_Exec"));
   voidchar _AddCodeLine = (voidchar)(GetProcAddress (hModule, "_AddCodeLine"));
   intvoid _OutLines = (intvoid)GetProcAddress (hModule, "_OutLines");
   charint _GetOutLine = (charint)GetProcAddress (hModule, "_GetOutLine");

   if (_AddCodeLine == NULL || IsDone == NULL ||_Prepare == NULL ||_Exec == NULL ||_OutLines == NULL || _GetOutLine == NULL )
   {
       cout << "Nieodnaleziono fukncji" << endl;
       return 2;
   }

   _Prepare();
   /*_AddCodeLine("set(height, 1200);");
   _AddCodeLine("set(width, 1500);");
   _AddCodeLine("set(title, 'Hello');");
   _AddCodeLine("Beep(100, 2000);");
   _AddCodeLine("System.Msg( 'Hello!');");*/
   _AddCodeLine("out('Hello World by Wosiedem');");

   _Exec();
   while (!IsDone());

   int howMany = _OutLines();
   for (int i=1; i<=howMany; i++)
   {
       cout << _GetOutLine(i) << endl;
   }
   return 0;
}

To nie jest dokładnie to o co prosiłeś, ale realizuje te sama funkcje: pokazuje jak użyć interpretatora we własnym programie :)

Pozdrawiam,

vo7 (;

Link do komentarza
Udostępnij na innych stronach

WIELKIE DZIĘKI!!

 

Bardzo Ci dziękuję, że to zrobiłeś! Oczywiście z dopiskiem "by Wosiedem" będzie w następnej wersji. Oraz dodam zaraz do sense script Wiki.

 

Ciesze się bardzo, że mi pomogłeś, dziękuję!

 

Mały edicik i offtop zarazem :P: W C++ to zapisywać jako plik np sensescriptRun.h , tak? // OK rozwiązane, dzięki Wosiedem :)

 

Jeszcze jeden EDIT ;D:

 

Jak coś to napisałem krótkiego tutka: Struktury danych - o używaniu tablic, czy rekordów w sensescript. Tutek dostępny: http://programowanie.66ghz.com/articles.php?article_id=7 / http://4programmers.net/%5Bsense_script%5D_struktury_danych / http://ss-wiki.isgreat.org/doku.php/data_structures

 

Pozdrawiam! :)

Link do komentarza
Udostępnij na innych stronach

Dobra, ponieważ były opinie, że tak wygodniej (lub nawet że tak nie umiem xD) to w następnej wersji będzie można tradycyjnie używać x=cośtam(y);

 

Np:

KODmath(w, '2+5');

jak i

KODw=math('3+5');

Będzie równoznaczne i do zmiennej w zapisze 8 ;] Działać to będzie oczywiście dla KAŻDEJ funkcji.

 

Jakieś pytania ;] ? :)

Link do komentarza
Udostępnij na innych stronach

No nareszcie :) A najlepiej by było gdyby nie trzeba by było w ogóle korzystać z math ,a robić to bezpośrednio czyli

 

x=3+5

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

@Dexarz & @Brainer - to, jak kto użyje to jego wola ;] - będzie można używać i np. Internet.GetIP(zmienna); (co np wg mnie jest lepsze), jak i zmienna = Internet.GetIP(); - oba będą poprawne i oba będą działały...

 

I jeszcze @Dexarz - spox, to też będzie... (x = *[y] + 1; na przykład)

 

Zastanawiam się tylko kiedy wydać kolejną paczkę.. :)

Link do komentarza
Udostępnij na innych stronach

To leci na stringach czy na zwykłych zmiennych liczbowych (w sensie ta matematyka cała, no wiesz o co mi chodzi :P - w sensie czy można zrobić 999999999^98888888 i się nie wywali ^_^)?

Link do komentarza
Udostępnij na innych stronach

Sprawdzimy.. xD

robie KODile=module.UCalcul('999999999^98888888');

out(*[ile]);

...

 

Emm... Wychodzi wynik: CYTATINF lub

Inf+
w zależności od użycia math lub module.ucalcul... o_O nie wiem co to znaczy szczerze mówiąc xD
Link do komentarza
Udostępnij na innych stronach

inf to skrót od infinity - nieskończoność

 

Nvm-owi chodziło o to czy obsługujesz także większe liczby niż 32 czy tam 64 bitowe

No ale jak widać te funkcje z modułu math to nie twoje p:

Piszę proste programy i stronki internetowe na zlecenie, zaliczenie...

Delphi, Pascal, C++, (X)HTML, CSS, trochę PHP, Javascript i MySQL

Kontakt: gg:1477872 e-mail: lewymati@wp.pl

Link do komentarza
Udostępnij na innych stronach

Math jak najbardziej moje, ale Module.UCalcul już nie (o czym pisze na http://ss-wiki.isgreat.org/doku.php/module.ucalcul ;]). Po prostu tak zwrócił mi Delphi i nie wiedziałem dlaczego.. o_O I dzięki za odpowiedź :D Jak widać na gigantycznych (strasznie gigantycznych :P) liczbach operować nie można.. Za pewne dodam więc moduł dla gigantycznych liczb... ;]

 

PS.

teraz działa już to o co prosił Dexarz:

Np można sobie zrobić:

KODx=5 + *[y];

oczywiście nadal funkcjonuje też stara struktura!:

KODmath(x, '5+*[y]');, czy

KODx = math('5+*[y]');

 

Wszystkie trzy wyrażenia będą brane pod uwagę;]

 

Dodam tylko, że przy wpisywaniu wyrażeń w ten sposób: zmienna = cośtam * coś tam; itp używany jest moduł UCalcul (więcej o nim na http://ss-wiki.isgreat.org/doku.php/module.ucalcul), więc można operować AND, OR itp itd..;] Trzeba jedynie pamiętać o jednej małej przeszkodzie:

 

Np. nie zadziała nam:

KODx=*[y] + cos(35);

TAKIE WYRAŻENIE BĘDZIE BŁĘDNE!

Jeżeli bowiem występują w naszym wyrażeniu nawiasy, to należy całe wyrażenie umieścić w nawiasach, np:

KODx=(*[y] + cos(35));

 

Mam nadzieję, że tym którym podobała się składnia sense script zostaną przy starej, natomiast Ci, którzy na nią narzekali będą już mogli znaleźć "coś dla siebie" :)

Link do komentarza
Udostępnij na innych stronach

Bardzo miło mi poinformować, że udało mi się znacznie poprawić wydajność sense script..!

 

sense script był troszkę mało wydajny.. Teraz z dumą mogę stwierdzić, że jest bardzo wydajny.

 

Zabiera w pamięci do ponad 60% mniej miejsca!

A co za tym idzie, jego praca znacznie przyspieszyła! Uruchomcie sobie przykład "99 bottle of beer - simpler ver.sense) - uruchomienie go trwa ok. 700-1500MS...

W następnej wersji (jeszcze jej nie upubliczniłem) ten sam przykład wykonuje się w 52-97MS! (jest to czas potrzebny Windowsowi, aby linijka po linijce dodawać tekst do memo)

Link do komentarza
Udostępnij na innych stronach

No to szybko ,niezłe cacko xD Brakuje mi jeszcze jakieś łatwiejsze tworzenie funkcji i procedur i będzie gitara xD

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

  • 4 months later...

WITAM SERDECZNIE!

 

Od tej wersji o której tu pisałem zaszło wieeele zmian!

 

Co w nich?

1. Łatwiejsze tworzenie procedur na przykład. Lepsza obsługa dynamiczna okienek ( awięc można tworzyć aplikacje)

 

2. Składnia C-poodobna w wielu wyrażeniach! Np:

Nie trzeba już pisać:

KODmath(a, '2 * 2');

 

set(b, 3);

 

Module.uCalcul(logiczny, '*[bb] OR *[cc] OR *[dd]');

A można zamiast tego:

KODa = 2 * 2;

 

b=3;

 

logiczny = *[bb] OR *[cc] OR *[dd];

Wprowadzę następnie jeszcze większe udogodnienia (w trakcie ;>)

 

3. Nowe przydatnie funkcje (np. md5, pobranie pliku, strony, obsługa schowka systemowego)

 

4. Ulepszony znacznie Compliter (np. Fast Help tool na selection->Ctrl+F1, Fast insertion, Fast help)

 

5. Poprawione wiele poważnych bugów

 

6. OPTYMALIZACJA przez duże O :P Teraz wykonanie kodu, które wtedy wykonywało się ok. 90ms teraz trwa 0-1 :)

 

I możecie zobaczyć wiele, wiele, wiele więcej ciekawych zmian!

 

Zapraszam do artykułu "Poznaj sense script 1.3.0" na stronie http://programowanie.66ghz.com/articles.php?article_id=14

 

 

 

Proszę o opinie, uwagii, błędy i oceny :)

 

 

Pozdrawiam Was serdecznie!

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...