Français
Forum

Array et nProc

 
- page 1 -



Andreas
Koch
allô zusammen,

ici hat sich chez mir un kleines Problem chez qui Übergabe eines Arrays à une nProc ergeben.

et zwar venez chaque la fois qui angehängte Fehlermeldung (Application Crash), après que cela erste Ergebnis ausgedruckt wurde. peux mir quelqu'un expliquer, quoi je là faux fais?
KompilierenMarqueSéparation
CLS
Declare HuckleberryFinn![], Tom!, Sawyer!
HuckleberryFinn![1]=1
HuckleberryFinn![2]=3
Tom!=1
Sawyer!=3

nproc Test1

    Parameters HuckleberryFinn![]
    Declare Ergebnis!
    Ergebnis!=HuckleberryFinn![1]+HuckleberryFinn![2]
    Return Ergebnis!

EndProc

nproc Test2

    Parameters a!,b!
    Declare Ergebnis!
    Ergebnis!=a!+b!
    Return Ergebnis!

EndProc

Print Test2(Sawyer!,Tom!)
Print Test1(HuckleberryFinn![])
Waitinput

243 kB
Hochgeladen:30.08.2012
Downloadcounter46
Download
 
30.08.2012  
 



 
- page 1 -



Nico
Madysa
So large je sais, peut Arrays pas à NProcs transfert volonté. seulement Bereiche#, Cordes$, Longs& et Floats! sommes erlaubt.
 
30.08.2012  
 



s'il te plaît siehe Datentypen: [...] 

Nativ volonté (comment de Nico bereits erwähnt) Cordes, Floats & Longs soutenu.

si Vous Wertekette comment Arrays transfert vouloir ensuite hole Dir simple

une grenier z.B. per globalAlloc:
KompilierenMarqueSéparation
var meinSpeicher&=globalAlloc(gPTR,20)// 20 Byte Speicher reservieren und Handle in meinSpeicher& merken
>

et lege là hinein Votre Werte:
KompilierenMarqueSéparation
long meinSpeicher&,0=10,20,30,40,50
>

un Long nécessaire im grenier 4 Byte et un Float 8 -

5 Floats dans den grenier poser alors so:
KompilierenMarqueSéparation
//speicher holen
var meineFloats&=globalAlloc(gPTR,5*8)
//floatwerte in den Speicher legen
float meineFloats&,0=1.1,2.2,3.3,4.4,5.5
//speicher an nProc übergeben
print myNProc(meineFloats&)
//speicher freigeben
globalFree(meineFloats&)
waitinput
end

nProc myNProc

    parameters meineFloats&
    //irgendwas mit floats machen... geben wir einfach z.B. den 4. Floatwert zurück
    return getFloat(meineFloats,8*3)

30.08.2012  
 




Andreas
Koch
merci pour qui Antwort.

ensuite habe je iFs Beitrag ici wohl quelque chose faux interpretiert.

[...] 
 
30.08.2012  
 



Welchen Beitrag oui c'est ca?
 
30.08.2012  
 




Nico
Madysa
Vermutlich den ici: [...]  weil es y so klingt, comme devrait on seulement cela Schlüsselwort "proc" par "nproc" ersetzen et alles wäre knorke.
 
30.08.2012  
 




Andreas
Koch
Offen gestanden, hattest du seulement dans aucun deiner Posts geschrieben, dass cela avec Arrays gar pas allez. je hatte cela so interpretiert, dass es aussi avec Arrays funktioniert (et mich déjà gefreut...). Eigentlich hätte je es aus dem letzten Beitrag entnehmen peut, mir était jusqu'à dahin seulement encore nie aufgefallen, dass on à APIs aucun Arrays übergibt. mais probablement wolltest du mir là oui c'est ca cela mitteilen, quoi maintenant trop diesem Thema ici geführt hat.
Sorry pour qui Umstände. suis quelquefois bisschen schwer de Begriff.
 
30.08.2012  
 



Verstehe. cela ici einmal durchlesen: [...]  -

c'est quasi un entier entier simple Profan mais plan comme Unterstützung trop XProfan

avec allen positiven Eigenschaften eines nativen Profans.


Offen gestanden, hattest du seulement dans aucun deiner Posts geschrieben, dass cela avec Arrays gar pas allez.


oui, simple weil cela "soooo" oui aussi pas entier stimmt, car aussi si le Array-

Schreibweise pas verwendet wird, so sommes Arrays oui Datenketten et cet wiederum

sommes léger per grenier anzufertigen et wiederum aussi léger avec nProcs

verwertbar. je hatte versucht pour 1-2 Beispiele trop donner. si Du pas weiterkommst

ensuite simple fix annoncer car ensuite bricoler wir cela zusammen.
 
30.08.2012  
 




funkheld
Fehlermeldung:
meineFloats undeklariert....

Gruss
 
30.08.2012  
 



bestimmt weil je un Undzeichen oublier qc habe:

getFloat(meineFloats&,8*3)

comment geschrieben simple dans den Editor ici getippt
 
30.08.2012  
 




Andreas
Koch
Sorry gens, je suis encore steckengeblieben.
maintenant habe je qui Arrays![] dans Bereiche# umgewandelt et qui transfert, so large si bien. il scheint aussi avec Procs richtig trop le calcul.
mais chez nProcs beschwert il sich dans qui Procédure DreiecksmatrixTest seulement, dass FHG% et Anzahl_Lastfaelle% pas deklariert seien (quoique qui doch avec transfert volonté). si je qui deklariere, bekomme je anschließend une seltsame Fehlermeldung, siehe Anhang.
KompilierenMarqueSéparation
Window 800,800
var Size%=6
Declare A#, Zeile&, Spalte&, Diagonale&, Faktor!, aux!,L#,Lastfall%,V#
DIM A#,Size%*Size%*8
DIM L#,Size%*8
DIM V#,Size%*8
Lastfall%=0
'Erzeugung zweier Zufallsmatrizen

WhileLoop 0,Size%-1

    Spalte&=&loop

    WhileLoop 0,Size%-1

        Zeile&=&loop
        SMAT(A#,Size%,Spalte&,Zeile&,1+Rnd())

        If Spalte&<1

            SMAT(L#,Size%,Spalte&,Zeile&,1+Rnd())

        EndIf

    EndWhile

EndWhile

'Umformung, Erzeugung einer Dreiecksmatrix

nproc DreiecksmatrixTest

    Parameters A#, L#, FHG%, Anzahl_Lastfaelle%
    Declare Diagonale&,Zeile&,Lastfall&,Faktor!,Spalte&, aux!, FHG%, Anzahl_Lastfaelle%

    WhileLoop 0,(FHG%-1),1

        Diagonale&=&loop

        WhileLoop Diagonale&+1,FHG%-1,1

            Zeile&=&loop
            '      WaitInput
            Faktor!=LMAT(A#,FHG%,Diagonale&,Zeile&)/LMAT(A#,FHG%,Diagonale&,Diagonale&)

            if Faktor!<>0

                WhileLoop 0,Anzahl_Lastfaelle%-1

                    Lastfall&=&loop
                    aux!=LMAT(L#,FHG%,Lastfall&,Zeile&)-Faktor!*LMAT(L#,FHG%,Lastfall&,Diagonale&)
                    SMAT(L#,FHG%,Lastfall&,Zeile&,aux!)

                EndWhile

                WhileLoop 0,FHG%-1,1

                    Spalte&=&loop
                    aux!=LMAT(A#,FHG%,Spalte&,Zeile&)-Faktor!*LMAT(A#,FHG%,Spalte&,Diagonale&)
                    SMAT(A#,FHG%,Spalte&,Zeile&,aux!)

                EndWhile

            EndIf

        EndWhile

    EndWhile

EndProc

nProc LMAT

    Parameters Bereich#, Size%, Spalte& , Zeile&
    Declare Result!
    Result!=Float(Bereich#, (Spalte&*Size%+Zeile&)*8)
    '  Print "Spalte&",Spalte&,"Zeile&",Zeile&, ": ", Result!
    Return Result!

EndProc

nProc SMAT

    Parameters Bereich#, Size%, Spalte&, Zeile&,Wert!
    ' Locate 1,1
    ' Print "Spalte&",Spalte&,"Zeile&",Zeile&,": ",Wert!
    Float Bereich#,(Spalte&*Size%+Zeile&)*8=Wert!

EndProc

'Rücksubstitution

nProc SolverTest

    Parameters Lastfall&, A#,L#, V#, FHG%
    Declare aux!, Zeile&, Spalte&, Diagonale&

    WhileLoop FHG%,1,-1

        Diagonale&=&loop-1
        aux!=0

        WhileLoop Diagonale&+1,FHG%-1,1

            Spalte&=&loop
            aux!=aux!+LMAT(A#,FHG%,Spalte&,Diagonale&)*LMAT(V#,FHG%,Lastfall&,Spalte&)

        EndWhile

        aux!=(LMAT(L#,FHG%,Lastfall&,Diagonale&)-aux!)/LMAT(A#,FHG%,Diagonale&,Diagonale&)
        SMAT(V#,FHG%,Lastfall&,Diagonale&,aux!)

    EndWhile

EndProc

DreiecksmatrixTest(A#, L#, Size%, 0)
SolverTest(0,A#,L#, V#, Size%)

WhileLoop 0,Size%-1

    Print LMAT(V#, Size%,0, &loop)

EndWhile

WaitInput
Dispose L#, V#, A#

avez un peu patience avec mir, je travaille encore pas so longtemps avec Profan....

167 kB
Hochgeladen:31.08.2012
Downloadcounter49
Download
 
31.08.2012  
 



aucun Sorge, voilà sur jeden le cas genügend patience vorhanden.

Du verwendest dans den nProcs Integer ( % ) -

dans nProcs gibt es Longs ( & ), Floats ( ! ) et Cordes ( $ ) -

nutze alors statt qui Integer ( % ) qui Longs ( & ).

qui nProcs sommes dans manchen Dingen quelque chose pingeliger -

so doit Float-Konstanten toujours avec Dezimaltrenner/ Punkt

ausgeschrieben volonté.

Z.B. 1.0 statt 1 ou bien 0.0 statt 0.

tu écris: si facteur!<>0 statt si facteur!<>0.0

tout autor meckert XPSE cela Long gegeben ist ( qui 0 ) mais Float erwartet wird

dans qui Funktion dreiecksmatrixtest.

tu écris dans qui nProc SMAT: Paramètres Bereich#, devrait mais bereich&

heissen.

Tip: Statt Float Bereich#,(Spalte&*Size%+Zeile&)*8=Wert! quoi mais
Float Bereich&,(Spalte&*Size%+Zeile&)*8=Wert! heissen devrait dans nProcs lieber
setFloat(Bereich&,(Spalte&*Size%+Zeile&)*8,Wert!) écrivons.

aussi dans den anderen Procs qui Bereichsvariablen statt avec # avec & écrivons.
 
31.08.2012  
 



 
- page 2 -



Andreas
Koch
merci pour qui Aider et qui Lehrstunde, je crois, là hätte je mich dusselig gesucht. maintenant fonctionne es einwandfrei par et j'ai quoi gelernt.
si es richtig rechnet, muss je encore vérifier. à et pour sich sollte cela Ding mais un lineares Gleichungssystem lösen peut (sofern sur qui Hauptdiagonalen aucun Nullen auftauchen).
KompilierenMarqueSéparation
Window 800,800
var Size&=6
Declare A#, Zeile&, Spalte&, Diagonale&, Faktor!, aux!,L#,Lastfall%,V#
DIM A#,Size&*Size&*8
DIM L#,Size&*8
DIM V#,Size&*8
Lastfall%=0
'Erzeugung zweier Zufallsmatrizen

WhileLoop 0,Size&-1

    Spalte&=&loop

    WhileLoop 0,Size&-1

        Zeile&=&loop
        SMAT(A#,Size&,Spalte&,Zeile&,1+Rnd())

        If Spalte&<1

            SMAT(L#,Size&,Spalte&,Zeile&,1+Rnd())

        EndIf

    EndWhile

EndWhile

'Umformung, Erzeugung einer Dreiecksmatrix

nproc DreiecksmatrixTest

    Parameters A&, L&, FHG&, Anzahl_Lastfaelle&
    Declare Diagonale&,Zeile&,Lastfall&,Faktor!,Spalte&, aux!

    WhileLoop 0,(FHG&-1),1

        Diagonale&=&loop

        WhileLoop Diagonale&+1,FHG&-1,1

            Zeile&=&loop
            '      WaitInput
            Faktor!=LMAT(A&,FHG&,Diagonale&,Zeile&)/LMAT(A&,FHG&,Diagonale&,Diagonale&)

            if Faktor!<>0.0

                WhileLoop 0,Anzahl_Lastfaelle&-1

                    Lastfall&=&loop
                    aux!=LMAT(L&,FHG&,Lastfall&,Zeile&)-Faktor!*LMAT(L&,FHG&,Lastfall&,Diagonale&)
                    SMAT(L&,FHG&,Lastfall&,Zeile&,aux!)

                EndWhile

                WhileLoop 0,FHG&-1,1

                    Spalte&=&loop
                    aux!=LMAT(A&,FHG&,Spalte&,Zeile&)-Faktor!*LMAT(A&,FHG&,Spalte&,Diagonale&)
                    SMAT(A&,FHG&,Spalte&,Zeile&,aux!)

                EndWhile

            EndIf

        EndWhile

    EndWhile

EndProc

nProc LMAT

    Parameters Bereich&, Size&, Spalte& , Zeile&
    Declare Result!
    Result!=Float(Bereich&, (Spalte&*Size&+Zeile&)*8)
    '  Print "Spalte&",Spalte&,"Zeile&",Zeile&, ": ", Result!
    Return Result!

EndProc

nProc SMAT

    Parameters Bereich&, Size&, Spalte&, Zeile&,Wert!
    ' Locate 1,1
    ' Print "Spalte&",Spalte&,"Zeile&",Zeile&,": ",Wert!
    Setfloat(Bereich&,(Spalte&*Size&+Zeile&)*8,Wert!)

EndProc

'Rücksubstitution

nProc SolverTest

    Parameters Lastfall&, A&,L&, V&, FHG&
    Declare aux!, Zeile&, Spalte&, Diagonale&

    WhileLoop FHG&,1,-1

        Diagonale&=&loop-1
        aux!=0

        WhileLoop Diagonale&+1,FHG&-1,1

            Spalte&=&loop
            aux!=aux!+LMAT(A&,FHG&,Spalte&,Diagonale&)*LMAT(V&,FHG&,Lastfall&,Spalte&)

        EndWhile

        aux!=(LMAT(L&,FHG&,Lastfall&,Diagonale&)-aux!)/LMAT(A&,FHG&,Diagonale&,Diagonale&)
        SMAT(V&,FHG&,Lastfall&,Diagonale&,aux!)

    EndWhile

EndProc

DreiecksmatrixTest(A#, L#, Size&, 0)
SolverTest(0,A#,L#, V#, Size&)

WhileLoop 0,Size&-1

    Print LMAT(V#, Size&,0, &loop)

EndWhile

WaitInput
Dispose L#, V#, A#

Nachtrag: qui Quellcode ist inzwischen geprüft et il scheint korrekt trop le calcul. il ist dans qui acte très viel plus rapide comme auparavant. j'ai aucun genaue Messung gemacht, mais facteur 2000 ist realistisch.
 
31.08.2012  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

5.346 Views

Untitledvor 0 min.
rafl26.12.2020
Georg Teles13.02.2016
Andreas Koch08.09.2015
Peter Max Müller10.10.2014
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie