Español
Foro

Array y nProc

 
- Página 1 -



Andreas
Koch
¡Hola zusammen,

hier ha se en me una kleines Problema en Übergabe uno Arrays a una nProc ergeben.

Und zwar kommt cada vez el angehängte Fehlermeldung (Application Crash), después de el erste Ergebnis ausgedruckt wurde. Kann me alguien erklären, Yo como falso mache?
KompilierenMarcaSeparación
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
Ladeanzahl50
Descargar
 
30.08.2012  
 



 
- Página 1 -



Nico
Madysa
So weit Yo weiß, puede Arrays no a NProcs transferencia voluntad. Nur Bereiche#, Cuerdas$, Longs& y Floats! son erlaubt.
 
30.08.2012  
 



Bitte siehe Datentypen: [...] 

Nativ voluntad (como de Nico ya erwähnt) Cuerdas, Floats & Longs unterstützt.

Si usted una Wertekette como Arrays transferencia möchtest entonces hole Usted simplemente

una Speicher z.B. por globalAlloc:
KompilierenMarcaSeparación
var meinSpeicher&=globalAlloc(gPTR,20)// 20 Byte Speicher reservieren und Handle in meinSpeicher& merken
>

y lege hay hinein Su Werte:
KompilierenMarcaSeparación
long meinSpeicher&,0=10,20,30,40,50
>

Ein Largo benötigt en el Speicher 4 Byte y una Float 8 -

5 Floats en el Speicher legen also así:
KompilierenMarcaSeparación
//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
Gracias para el Antwort.

Dann Yo iFs Contribución hier wohl algo falso interpretiert.

[...] 
 
30.08.2012  
 



Welchen Contribución genau?
 
30.08.2012  
 




Nico
Madysa
Vermutlich el hier: [...]  porque lo en él así klingt, como debería uno sólo el Schlüsselwort "proc" por "nproc" sustituir y alles wäre knorke.
 
30.08.2012  
 




Andreas
Koch
Offen gestanden, había du sólo en keinem deiner Beiträge geschrieben, dass el con Arrays nada va. Tuve el así interpretiert, dass lo auch con Arrays funktioniert (y mich ya gefreut...). Eigentlich hätte Yo de el letzten Contribución entnehmen puede, me war a dahin sólo todavía nie aufgefallen, dass uno a APIs no Arrays übergibt. Aber vermutlich wolltest du me como genau el mitteilen, qué ahora a diesem Thema hier geführt ha.
Sorry para el Umstände. Bin manchmal bisschen schwer de Begriff.
 
30.08.2012  
 



Verstehe. Das hier una vez durchlesen: [...]  -

es quasi una bastante bastante einfaches Profano aber eben como Unterstützung a XProfan

con allen positiven Características uno nativen Profans.


Offen gestanden, había du sólo en keinem deiner Beiträge geschrieben, dass el con Arrays nada va.


Sí, simplemente porque el "soooo" en efecto no bastante stimmt, porque auch si la Array-

Schreibweise no verwendet se, así son Arrays sí Datenketten y esta wiederum

son ligeramente por Speicher anzufertigen y wiederum auch ligeramente con nProcs

verwertbar. Tuve intenta dafür 1-2 Beispiele a geben. Si usted no weiterkommst

entonces simplemente fix informe porque entonces remendar wir el zusammen.
 
30.08.2012  
 




funkheld
Fehlermeldung:
meineFloats undeklariert....

Gruss
 
30.08.2012  
 



determinado porque Yo una Undzeichen vergessen habe:

getFloat(meineFloats&,8*3)

como geschrieben simplemente en el Editor hier getippt
 
30.08.2012  
 




Andreas
Koch
Sorry Personas, Yo bin ya otra vez steckengeblieben.
Jetzt Yo el Arrays![] en Bereiche# umgewandelt y el transferencia, así weit tan bueno. Er scheint auch con Procs correcto a rechnen.
Aber en nProcs beschwert él se en el Procedimiento DreiecksmatrixTest sólo, dass FHG% y Anzahl_Lastfaelle% no deklariert seien (obwohl el doch con transferencia voluntad). Wenn Yo el deklariere, bekomme Yo anschließend una seltsame Fehlermeldung, siehe Anhang.
KompilierenMarcaSeparación
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
Disponer L#, V#, A#

Habt una wenig Geduld con me, Yo arbeite no tan largo con Profano....

167 kB
Hochgeladen:31.08.2012
Ladeanzahl50
Descargar
 
31.08.2012  
 



Keine Sorge, como es en cada Fall genügend Geduld disponible.

Usted verwendest en el nProcs Integer ( % ) -

en nProcs hay Longs ( & ), Floats ( ! ) y Cuerdas ( $ ) -

nutze also en lugar de el Integer ( % ) el Longs ( & ).

El nProcs son en manchen Dingen algo pingeliger -

así necesario Float-Konstanten siempre con Dezimaltrenner/ Punkt

ausgeschrieben voluntad.

Z.B. 1.0 en lugar de 1 oder 0.0 en lugar de 0.

Usted schreibst: if Faktor!<>0 en lugar de if Faktor!<>0.0

Darum meckert XPSE el Largo se da ( el 0 ) aber Float esperado se

en el Función dreiecksmatrixtest.

Usted schreibst en el nProc SMAT: Parámetros Zona#, debería aber bereich&

heissen.

Tip: Statt Float Zona#,(Spalte&*Size%+Zeile&)*8=Wert! qué aber
Float Zona&,(Spalte&*Size%+Zeile&)*8=Wert! heissen debería en nProcs más bien
setFloat(Bereich&,(Spalte&*Size%+Zeile&)*8,Valor!) escribir.

Auch en el otro Procs el Bereichsvariablen en lugar de con # con & escribir.
 
31.08.2012  
 



 
- Página 2 -



Andreas
Koch
Gracias para el Ayuda y el Lehrstunde, Yo glaube, como hätte Yo mich dusselig gesucht. Jetzt se ejecuta lo einwandfrei por y yo habe qué gelernt.
Ob lo correcto rechnet, muss Todavía prüfen. An y para se debería lo aber una lineares Gleichungssystem lösen puede (sofern en el Hauptdiagonalen no Nullen auftauchen).
KompilierenMarcaSeparación
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
Disponer L#, V#, A#

Apéndice: Der Quellcode es inzwischen geprüft y él scheint korrekt a rechnen. Er es en el Tat muy viel más rápido como vorher. Yo habe no genaue Messung gemacht, aber Faktor 2000 es realistisch.
 
31.08.2012  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

5.520 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie