Español
Foro

Mehrere Volver Werte

 

Hubert
Binnewies
¡Hola zusammen..

Kleines Problema..
Yo sería me gerne unos pocos Características escribir el me Programmieren a mi derzeitigen Projekt vereinfachen.
Das Blöde es sólo el Yo en el meisten Características mehrere Rückgabewerte habe.

Yo el Ayuda en Xprofan por y siempre sólo gesehen el uno RETORNO sólo una Valor zurück geben kann.

Oder tener Yo como qué übersehen?

¿Cómo se puede Yo mehrere Werte zurückgeben?

Gracias schonmal en el voraus.

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
15.09.2006  
 




RGH
Nein, Usted hast nichts übersehen: Como en allen otro Idiomas auch ha una Función extakt una Funktionsergebnis y somit una Rückgabewert.

Prinzipiell hay zwei Möglichkeiten, esta Limitierung a umgehen:

1. Zum una könntest Usted mehrere Werte como Teilstring uno Cuerdas transferencia. XProfan ha, besonders de Versión 10, mächtige Befehle para Umgang con Substrings. So podría para Ejemplo en el Procedimiento posición:
KompilierenMarcaSeparación
!return str$(x%) + ";" + str$(y) + ";" + str$(z%)
>

Im aufrufenden Programa sähe lo entonces así de:
KompilierenMarcaSeparación
!erg$ = meineFunktion()
x% = val(substr$(erg$,1,";")
y% = val(substr$(erg$,2,";")
z% = val(substr$(erg$,3,";")pre>

2. El otro Möglichkeit Es el Verwendung uno Struktur o. uno Objektes, como hierbei sí sólo el Zeiger a el Función transferencia se:
KompilierenMarcaSeparación
!STRUCT TErg = x%, y%, z%
DIM Erg#, TErge>

El Función sería así aussehen:
KompilierenMarcaSeparación
!PROC meineFunktion
Parameters E#
<...>
E#.x% = ...
E#.y% = ..
E#.z% = ..
<...>

END
a>

Über volver sería Yo eventuell todavía zurückggeben, si el Función erfolgreich war. Im aufrufenden Programa sähe lo entonces etwa así de:
KompilierenMarcaSeparación
!erfolg% = meineFunktion(Erg#)
x% = Erg#.x%
y% = Erg#.y%
z% = Erg#.z%

Mit el zweiten Solución puede auch komplexere Daten elegant zurückgeliefert voluntad. (Diese Solución es auch en otro Programmiersprachen bastante verbreitet.)

Saludo
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
15.09.2006  
 




Hubert
Binnewies
Gracias para el wirklich erschöpfende Auskunft....

pero yo denke Yo nehme una weitere Möglichkeit...

Yo definiere me entsprechende globale Variables el Yo en el Procedur siempre sólo vacío y luego con el Rückgabewert versehe.

sooft Yo el Proceduren brauche lohnt se el Verfahren denke Yo..

Aber otra vez Gracias... Su Antwort voluntad I, con Sicherheit später veces brauchen.

Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
15.09.2006  
 



Hab hier todavía una Ejemplo, sin jegliche globale Variable. Simuliertes byRef
KompilierenMarcaSeparación
Struct Long = l&

Proc Test1

    parameters a1&, a2&
    Declare B#
    Dim B#, Long
    B# = a1&
    B#.l& = 50  50 in c& von Test2 schreiben
    B# = a2&
    B#.l& = 100  100 in d& von Test2 schreiben
    Dispose B#  lokale Bereichsvariable wird nicht mehr gebraucht

EndProc

Proc Test2

    Declare c&, d&
    Test1 Addr(c&), Addr(d&)
    print "Wert von c& = " + Str$(c&) + "  d& = " + Str$(d&) + " in der Proc"

EndProc

Declare c&, d&
cls
Test2
Print
Print "Globales c& = " + Str$(c&) + "  Globales d& = " + Str$(d&) + " wurden nicht verändert!"
waitkey

Proc Test2 encima son el Pointer de c& y d& a Proc Test1, welche hay 50 y 100 como Rückgabe einträgt. Como uno siehst, no globalen Variables y Zona se auch igual disposed

Hoffe veces, el kann alguien gebrauchen

// Apéndice:
tener el código todavía algo erweitert, así uno sieht, el lo wirklich va

Hier otra vez sin Hilfsstructur, tener Yo garnicht dran pensamiento, el lo en Profano auch así va:
KompilierenMarcaSeparación
Proc Test1

    parámetros a1&, a2&
    Declarar B#
    Dim B#,4
    B# = a1&
    Largo B#,0 = 50  50 en c& de Test2 escribir
    B# = a2&
    Largo B#,0 = 100  100 en d& de Test2 escribir
    Disponer B#  lokale Bereichsvariable se no mehr gebraucht

ENDPROC

Proc Test2

    Declarar c&, d&
    Test1 Addr(c&), Addr(d&)
    imprimir "Wert de c& = " + Str$(c&) + "  d& = " + Str$(d&) + " en el Proc"

ENDPROC

Declarar c&, d&
c& = 1
d& = 1
cls
Test2
Imprimir
Imprimir "Globales c& = " + Str$(c&) + "  Globales d& = " + Str$(d&) + " fueron no verändert!"
waitkey

Ist tal vez verständlicher
 
15.09.2006  
 



Weils así schön es, todavía el einfachste Variante (tener así desafortunadamente bisher a wenig gemacht )
KompilierenMarcaSeparación
Proc Test1

    parameters a1&, a2&
    Long a1&,0 = 50
    Long a2&,0 = 100

EndProc

Proc Test2

    Declare c&, d&
    Test1 Addr(c&), Addr(d&)
    print "Wert von c& = " + Str$(c&) + "  d& = " + Str$(d&) + " in der Proc"

EndProc

Declare c&, d&
c& = 1
d& = 1
cls
Test2
Print
Print "Globales c& = " + Str$(c&) + "  Globales d& = " + Str$(d&) + " wurden nicht verändert!"
waitkey
 
15.09.2006  
 



Ähem - Usted änderst doch nix más como valor de globalen Variables - y el auch todavía umständlich.
 
15.09.2006  
 



[quote:a6584bda33=iF]Ähem - Usted änderst doch nix más como valor de globalen Variables - y el auch todavía umständlich. [/quote:a6584bda33]
El Variables en beiden Proc son lokal, Proc Test1 ändert el Variables de Test2, Gleichnamige Globale Variables bleiben auch obtener. Funktioniert así allerdings no con Cuerdas. Globale Variables voluntad no geändert

Yo übergebe el Pointer y mache una profanischen Poke
 
15.09.2006  
 



Ne quatsch - Usted deklarierst zwei Globale - el änderst Usted en el Proc - mehr no. Su Code va no sin Globals el Usted nutzt.

Oder stehe Yo aufm Schlauch?
 
15.09.2006  
 



[quote:869f8d550b=iF]Ne quatsch - Usted deklarierst zwei Globale - el änderst Usted en el Proc - mehr no. Su Code va no sin Globals el Usted nutzt.

Oder stehe Yo aufm Schlauch? [/quote:869f8d550b]
En me gehts::
KompilierenMarcaSeparación
Proc Test1

    parameters a1&, a2&
    Long a1&,0 = 50
    Long a2&,0 = 100

EndProc

Proc Test2

    Declare c&, d&
    Test1 Addr(c&), Addr(d&)
    print "Wert von c& = " + Str$(c&) + "  d& = " + Str$(d&)

EndProc

Test2
15.09.2006  
 



Ach ahora! Klar! Hab el Declarar en el zweiten Proc übersehen!

Thomas voluntad sagen, einfache el Adressen el Variables a una Proc transferencia, y el Variableninhalte por Largo ändern.
 
15.09.2006  
 




Hubert
Binnewies
ööööööhmmmmmm.....

y si yo no numerischen Werte pero Cuerdas habe??

(no schlecht el Solución, kann Yo gebrauchen)

Saludo Hubert
 
WinXP Prof, XProfan 9.1 Newbie

Ein kluger Kopf sagte mal:
"Nach dem derzeitigen Stand der Technik ist es unmöglich Programme zu schreiben, die fehlerfrei laufen!"
15.09.2006  
 




Rolf
Koch
Nur a Erweiterung:
Seit Ewigkeiten schlummert bajo propio Codes folgenders en meiner Página
Más como una Parámetro de uno Procedimiento zurückliefern - Neu (19.03.2003)

Man debería auch veces en meiner Página kucken *lol*
 
15.09.2006  
 




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

1.170 Views

Untitledvor 0 min.
Normann Strübli05.02.2023
H.Brill05.11.2022
RudiB.25.04.2021
Michael W.16.08.2017
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