Deutsch
Forum

Was sind native Funktionen?

 
- Seite 1 -



Weil du immer noch nicht verständlich erklärt hast, was nprocs sind.


Hallo Nico,

danke für den Hinweis und den Thread hier - leider kann ich damit aber nichts anfangen da ich nicht wissen kann, was Du nicht verstehst.

Vlt. kannst Du mir unter Beachtung der Dokumentation  [...]  sagen, was Dir unklar ist.


Inline-Assembler:
 
11.11.2009  
 



 
- Seite 3 -


Das hatte ich ja angeboten, aber Du zwingst mich ja.
 
12.11.2009  
 




Nico
Madysa
Ich? Ich dich zwingen? Ich von Hanswurst dich von großer Meister zwingen? Wer wäre ich und wer könnte ich sein, wenn es denn wäre, dass ich dich zwünge? Wer wäre und wer könnte, zwünge ich dich und ändertest du, mehr als Hansens Wurt sein? Bötest du an und zwünge ich dennoch, es wäre lächerlich, ja sonders gleichen! Um es kurz zu machen: Mach, was du willst.
 
Nico Madysa
12.11.2009  
 



Das mit dem Zwingen nimmste aber zurück!
 
13.11.2009  
 




Nico
Madysa
Du redetest doch zuerst von Zwängen!
 
Nico Madysa
14.11.2009  
 



Ja hab ich von Frank.
 
14.11.2009  
 




Nico
Madysa
Habe soeben versucht, meine Mandelbrotmenge XPSE-konform zu machen.
Pluspunkt ist schon mal klar, dass XProfan und APIs unterstützt werden. Hat mich zunächst echt beeindruckt.
KompilierenMarkierenSeparieren
Mandelbrotmenge zeichnen
 {$cleq}

{nproc Farbe

    nproc Farbe

        parameters a!,b!
        var za! = 0
        var zb! = 0
        var zr! = 0
        var i% = 0

        repeat

            za! = a! + sqr(za!) - sqr(zb!)
            zb! = b! + 2 * za! * zb!
            zr! = Sqrt(Sqr(za!) + Sqr(zb!))
            i%++
            Sleep(1)

        until (i% >= 255) or (zr! > 2)

        var farbe% = $FF * (1 - i% / 255)
        return RGB(farbe%,farbe%,farbe%)

    endproc

    {nproc MaleAus

        nproc MaleAus

            parameters hDC%, posx% , posy% , genau%
            declare y%,x%
            var my% = -1 * genau%
            var mx% = -2 * genau%
            var abbruch% = 0

            whileloop my%, 0 - my%

                y% = &loop

                whileloop mx%, 0 - (mx%  2)

                    x% = &loop
                    SetPixel(hDC%,(posx% + x%),(posy% - y%),Farbe(x% / genau%,y% / genau%))
                    Sleep(0)
                    case GetASyncKeyState(27) : abbruch% = 1
                    case abbruch% : break

                EndWhile

                case abbruch% : break

            EndWhile

        endproc

        cls
        MaleAus(%hDC, 300,200 , 100)
        waitinput
        end

Doch, als ich dann kompilieren wollte, kam dann diese Fehlermeldung:


Warnung: undeklariert: GENAU%
Naehe: ~22m VAR __xeL_MY%=-1 * GENAU%


Dann nahm ich, wie so oft empfohlen, den Kompilerbefehl {$noerr} und -- schwupps! -- brach profcomp.exe ab mit: "Befehl unbekannt: __cfInit"

Da muss noch gefeilt werden!
 
Nico Madysa
14.11.2009  
 




Nico
Madysa
Nachtrag: Gerade eben Minimalbeispiel probiert: Kein mit parameters angegebener Wert ist deklariert:
KompilierenMarkierenSeparieren
 {$cleq}

{nproc

    nproc Test

        parameters x%,y%,dummy%
        x% = 1
        declare dy%

        whileloop y%,y% + 100

            dy% = &loop

            whileloop x%,x% + 100

                SetPixel(%hDC,&loop,y%,$FF)

            EndWhile

        EndWhile

    endproc

    proc Test_X

        parameters x%,y%
        declare dy%

        whileloop y%,y% + 100

            dy% = &loop

            whileloop x%,x% + 100

                SetPixel &loop,y%,$FF00

            EndWhile

        EndWhile

    endproc

    cls
    Test_X(100,100)
    Test(205,100)
    waitinput
    end
 
Nico Madysa
14.11.2009  
 



Würdest Du nur einmal die Hilfe durchlesen, dann ginge Dir alles schwupps von den Fingern:  [...]  Datentypen: LONG&, FLOAT!, STRING$

Lade übrigens jetzt grad ein Update hoch, fehler bei jmps behoben - bitte unbedingt dann aktualisieren.

Tip: Wenn es richtig schnell werden soll, dann versuche rechnerisch auf Floats zu verzichten sondern nutze nur Long weil dieser direkt in Register passt.

Zu den APIS: Auch alle die man per Header einbindet!
 
14.11.2009  
 



So gehts:
KompilierenMarkierenSeparieren
Gemerkt/Separiert von http://xprofan.com/thread.core?p=54931#54931
 {$cleq}

{nproc

    nproc Test

        parameters x&,y&,dummy&
        x& = 1
        declare dy&

        whileloop y&,y& + 100

            dy& = &loop

            whileloop x&,x& + 100

                SetPixel(%hDC,&loop,y&,$FF)

            EndWhile

        EndWhile

    endproc

    proc Test_X

        parameters x&,y&
        declare dy&

        whileloop y&,y& + 100

            dy& = &loop

            whileloop x&,x& + 100

                SetPixel &loop,y&,$FF00

            EndWhile

        EndWhile

    endproc

    cls
    Test_X(100,100)
    Test(205,100,0)
    waitinput
    end
und bei Test(205,100) fehlt(e) der 3. Parameter. Besonders fehlende/falsche Funktionsparameter lassen abstürzen wie auch jede API. XPSE kontrolliert zwar TYP und Anzahl von Parametern bei NProcs, muss aber wg. Kompatiblität manchmal die Klappe halten was aber Fehler durchschlüpfen lassen kann - da feile ich aber noch.
 
14.11.2009  
 



Sehe jetzt erst, Du wollst Rechtecke pixeln - hattest bei SetPixel für Y aber falsche Variable - so gehts:
KompilierenMarkierenSeparieren
Gemerkt/Separiert von http://xprofan.com/thread.core?p=54931#54931
 {$cleq}

{nproc

    nproc Test

        parameters x&,y&,dummy&
        x& = 1
        declare dy&

        whileloop y&,y& + 100

            dy& = &loop

            whileloop x&,x& + 100

                SetPixel(%hDC,&loop,dy&,$FF)

            EndWhile

        EndWhile

    endproc

    proc Test_X

        parameters x&,y&
        declare dy&

        whileloop y&,y& + 100

            dy& = &loop

            whileloop x&,x& + 100

                SetPixel &loop,dy&,$FF00

            EndWhile

        EndWhile

    endproc

    cls
    Test(205,100,0)
    Test_X(100,100)
    waitinput
    end

Spielerei: ^^
KompilierenMarkierenSeparieren
Gemerkt/Separiert von http://xprofan.com/thread.core?p=54931#54931
 {$cle}

{nproc

    nproc Test

        parameters data&
        declare x&,y&,dummy&
        x& = 1
        declare dy&
        var mcur&=dim(8)

        while 1

            getCursorPos(mCur&)
            x&=int(sin(float(&getTickCount)*0.01)*100)+long(mCur&,0)
            y&=int(cos(float(&getTickCount)*0.01)*100)+long(mCur&,4)

            whileloop y&,y& + 100

                dy& = &loop

                whileloop x&,x& + 100

                    SetPixel(%hDC2,&loop,dy&,rnd(2)*getTickCount)

                EndWhile

            EndWhile

            invalidaterect(hWnd,0,0)
            updateWindow(hWnd)

        wend

    endproc

    proc Test_X

        parameters x&,y&
        declare dy&

        whileloop y&,y& + 100

            dy& = &loop

            whileloop x&,x& + 100

                SetPixel &loop,dy&,$FF00

            EndWhile

        EndWhile

    endproc

    windowstyle 80
    cls
    showmax
    createThread(0,0,procAddr(test,1),%hWnd,0,0)
    waitinput
    end

Grundsätzlich solch Bildmanipulationen aber noch viel viel schneller via get- und SetPixels (Compatible.Inc).

Nachtrag: Sehe grad, die Zeile za! = za! - zb! macht noch Probleme, Freizeichen vor dem Minus in bestimmten Situationen, grad mal schauen... (ohne Freizeichen gehts aber)
 
14.11.2009  
 




Nico
Madysa
Ohje, einfach so den so ziemlich häufigsten Datentyp weggelassen? Das macht doch Umstellungsschwierigkeiten.
Ich weiß zwar nicht, wie XPSE exakt arbeitet, aber was Profaner wollen, glaube ich, zumindest prinzipiell zu wissen; wie umständlich/zeitaufwendig wäre es denn, wenn XPSE in nprocs %-Integer automatisch in Longs umwandelte?
 
Nico Madysa
14.11.2009  
 



Das dürfte nicht sooo schwierig werden, ich hab aber noch mit nem anderen Bug zu kämpfen und schaue Update...
 
14.11.2009  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

39.090 Betrachtungen

Unbenanntvor 0 min.
p.specht15.11.2018
Ernst02.07.2016
funkheld11.04.2016
HofK26.01.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie