Français
Forum

plusieurs Retour Werte

 

Hubert
Binnewies
allô zusammen..

Kleines Problem..
je serait mir volontiers un paire Funktionen écrivons qui mir cela Programmieren à meinem derzeitigen projet simplifier.
cela Blöde ist seulement le moi dans den meisten Funktionen plusieurs Rückgabewerte habe.

je hab qui Aider dans Xprofan par et toujours seulement gesehen cela on avec RETOUR seulement une Wert zurück donner peux.

ou bien hab je là quoi übersehen?

comment peux je plusieurs Werte zurückgeben?

merci Schonmal d'avance.

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
non, tu as rien übersehen: comment dans allen anderen Sprachen aussi hat une Funktion extakt un Funktionsergebnis et somit une Rückgabewert.

Prinzipiell gibt es deux Opportunités, cet Limitierung trop tourner autour de:

1. Zum une könntest Du plusieurs Werte comme Teilstring eines Cordes transfert. XProfan hat, besonders ab Version 10, mächtige Befehle zum Umgang avec Substrings. So pourrait zum Beispiel dans qui Procédure stehen:
KompilierenMarqueSéparation
!return str$(x%) + ";" + str$(y) + ";" + str$(z%)
>

Im aufrufenden Programme sähe es ensuite so aus:
KompilierenMarqueSéparation
!erg$ = meineFunktion()
x% = val(substr$(erg$,1,";")
y% = val(substr$(erg$,2,";")
z% = val(substr$(erg$,3,";")pre>

2. l'autre Possibilité ist qui Verwendung einer Struktur bzw. eines Objektes, là hierbei oui seulement qui aiguille à qui Funktion transfert wird:
KompilierenMarqueSéparation
!STRUCT TErg = x%, y%, z%
DIM Erg#, TErge>

qui Funktion serait so air:
KompilierenMarqueSéparation
!PROC meineFunktion
Parameters E#
<...>
E#.x% = ...
E#.y% = ..
E#.z% = ..
<...>

END
a>

Über return serait je eventuell encore zurückggeben, si qui Funktion erfolgreich était. Im aufrufenden Programme sähe es ensuite etwa so aus:
KompilierenMarqueSéparation
!erfolg% = meineFunktion(Erg#)
x% = Erg#.x%
y% = Erg#.y%
z% = Erg#.z%

avec qui zweiten Solution peut aussi komplexere données elegant zurückgeliefert volonté. (cet Solution ist aussi dans anderen Programmiersprachen droite verbreitet.)

Salut
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
merci pour qui wirklich erschöpfende Auskunft....

mais je denke je prends une weitere Possibilité...

je definiere mir entsprechende globale Variablen qui je dans qui Procedur toujours seulement le vide et ensuite avec dem Rückgabewert versehe.

sooft comment je qui Proceduren brauche lohnt sich cela procéder denke je..

mais nochmal merci... Votre Antwort werde je avec Sicherheit später la fois 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 ici encore un Beispiel, sans jegliche globale Variable. Simuliertes byRef
KompilierenMarqueSéparation
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 sur gibt den Pointer de c& et d& à Proc Test1, quelle là 50 et 100 comme Rückgabe einträgt. comment on vois, aucun globalen Variablen et qui Bereich wird aussi juste disposed

Hoffe la fois, cela peux quelqu'un gebrauchen

// Nachtrag:
hab den Code et avec ca erweitert, avec cela on voit, cela es wirklich allez

ici nochmal sans Hilfsstructur, hab je garnicht tour gedacht, cela es dans Profan aussi so allez:
KompilierenMarqueSéparation
Proc Test1

    parameters a1&, a2&
    Déclarer B#
    Faible B#,4
    B# = a1&
    Long B#,0 = 50  50 dans c& de Test2 écrivons
    B# = a2&
    Long B#,0 = 100  100 dans d& de Test2 écrivons
    Dispose B#  lokale Bereichsvariable wird pas plus gebraucht

ENDPROC

Proc Test2

    Déclarer c&, d&
    Test1 Addr(c&), Addr(d&)
    imprimer "Wert de c& = " + Str$(c&) + "  d& = " + Str$(d&) + " dans qui Proc"

ENDPROC

Déclarer c&, d&
c& = 1
d& = 1
cls
Test2
Imprimer
Imprimer "Globales c& = " + Str$(c&) + "  Globales d& = " + Str$(d&) + " wurden pas modifié!"
waitkey

Ist peut-être verständlicher
 
15.09.2006  
 



Weils so joli ist, encore qui einfachste variante (hab avec cela malheureusement bisher trop wenig gemacht )
KompilierenMarqueSéparation
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 - Du änderst doch nix plus comme la valeur de globalen Variablen - et cela aussi encore compliqué.
 
15.09.2006  
 



[quote-part:a6584bda33=iF]Ähem - Du änderst doch nix plus comme la valeur de globalen Variablen - et cela aussi encore compliqué. [/quote-part:a6584bda33]
qui Variablen dans beiden Proc sommes bistrot, Proc Test1 ändert qui Variablen de Test2, Gleichnamige Globale Variablen rester aussi conservé. Funktioniert so allerdings pas avec Cordes. Globale Variablen volonté pas geändert

je übergebe den Pointer et fais une profanischen Poke
 
15.09.2006  
 



Ne quatsch - Du deklarierst deux Globale - qui änderst Du dans qui Proc - plus pas. Dein Code allez pas sans Globals qui Du utilise.

ou bien stehe je aufm Schlauch?
 
15.09.2006  
 



[quote-part:869f8d550b=iF]Ne quatsch - Du deklarierst deux Globale - qui änderst Du dans qui Proc - plus pas. Dein Code allez pas sans Globals qui Du utilise.

ou bien stehe je aufm Schlauch? [/quote-part:869f8d550b]
chez mir gehts::
KompilierenMarqueSéparation
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  
 



ah maintenant! bien sûr! Hab cela Déclarer dans qui zweiten Proc übersehen!

Thomas veux dire, simple qui Adressen qui Variablen à une Proc transfert, et qui Variableninhalte per Long changement.
 
15.09.2006  
 




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

et si je aucun numerischen Werte mais Cordes habe??

(pas mal qui Solution, peux je gebrauchen)

Salut 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
seulement zur Erweiterung:
depuis Ewigkeiten schlummert sous eigene Codes folgenders sur meiner page
plus comme une paramètre aus einer Procédure zurückliefern - récente (19.03.2003)

on sollte aussi la fois sur meiner page kucken *lol*
 
15.09.2006  
 




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

1.141 Views

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