Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Function mal anders?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 10:29    Titel: Function mal anders? Antworten mit Zitat

Ist wahrscheinlich eine relativ kurze Frage:
Kann ich einer Funktion einen Wert zuweisen?

Ich stelle mir das in folgender Art und Weise vor (was aber nicht funktionier):

Code:
declare function ausgabe as string

ausgabe = "Hallo Welt"
sleep

function ausgabe as string
  print ausgabe
end function


Als Ausgabe sollte dann "Hallo Welt" auf dem bildschirm erscheinen.

Mir ists schon klar das es sinnvoller wäre dafür eine Sub zu bemühen. Aber möchte einfach nur wissen ob dieser Weg irgendwie möglich ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 24.09.2007, 11:40    Titel: Antworten mit Zitat

Definitiv nicht. Das must du schon als Parameter übergeben zwinkern
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 11:42    Titel: Antworten mit Zitat

Will aber, dass das so funktioniert *mitmfußganzfestaufstampf*

prinzipiell kann ich einer funktion einen wert zuweisen. Aber ich komm aus der funktion selber nicht an den Wert herran!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 11:58    Titel: NACHTRAG Antworten mit Zitat

Ich habe in einem Listing zufällig gesehen das man funktionen auch dimensionieren kann.

(anzuschaun unter http://de.wikibooks.org/wiki/FreeBasic:_Kleinigkeiten#URLDownloadToFile )

Code:
Dim URLDownloadToFile as function ( [...] ) As Long


Kann man darüber irgendwas in der Richtung machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 24.09.2007, 13:04    Titel: Antworten mit Zitat

also ich sehe das so, dass der LONG-Wert auch in diesem fall nur der rückgabe wert ist... ist aber ne vermutung...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 24.09.2007, 13:22    Titel: Antworten mit Zitat

Dieser Code dort dient dazu, die Windows Lib "Urlmon.dll" dynamisch zu laden, da ist das durchaus möglich, ABER der Wert von "URLDownloadToFile" hat nichts mit dem Rückgabewert zutun! Es ist lediglich die "Adresse" der Funktion im RAM des Rechners zwinkern
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 13:51    Titel: anders gefragt.. Antworten mit Zitat

Mal anders gefragt:
Ich habe innerhalb der Funktion ihren wert zugewiesen mit
Code:
function = "hallo"
... so.. nun geht die funktion aber weiter und ich möchte auslesen was ich bisher der funktion als rückgabewert übergeben habe.

Das hier funktioniert leider nicht (aber so würd ich mir das vorstellen) :

Code:
declare function ausgabe as string

print ausgabe

function ausgabe as string
 function = "Hallo"
 function = function & " Welt"
end function


Statt "function" zur rückgabe zu benutzen könnte man natürlich auch den funktionsnamen selber benutzen (klappt aber genausowenig):

Code:
declare function ausgabe as string

print ausgabe

function ausgabe as string
 ausgabe = "Hallo"
 ausgabe = ausgabe & " Welt"
end function


Jetzt könnte man auf die Idee kommen eine zweite string-variable zu dimensionieren deren wert man am ende der funktion übeträgt. Aber genau das möchte ich NICHT!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 24.09.2007, 14:38    Titel: Antworten mit Zitat

und warum?
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 14:40    Titel: Antworten mit Zitat

Weil ich so vielleicht den wert auslesen könnte den ich einer funktion zuweise. Klar kann man fragen warum.. meine antwort ist: Ich möchte einfach nur die möglichkeiten kennen lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 24.09.2007, 14:49    Titel: Antworten mit Zitat

hä? oO also wenn du nur die möglichkeiten kennen willst, diese möglichkeit gibt es einfach nicht, warum willst du es dann krampfhaft haben? gewöhn dir einfach an, ein "DIM result AS STRING : result = bla & blubb & soweiter : RETURN result" und fertig.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 15:02    Titel: Antworten mit Zitat

Es muss aber doch möglich sein einer funktion einen wert auf dem umgekehrten weg zu übergeben..

also statt
Code:
ausgabe "Hallo Welt"


hätte ich gerne

Code:
ausgabe = "Hallo Welt"


sorry, wenn ich mich hier grad verkrampfe grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 24.09.2007, 15:24    Titel: Antworten mit Zitat

und wieso meinst du dass das möglich sein muss?

du kannst natürlich... (hehehehe)

ausgabe als shared string DIMen

eine sub schreiben, die kontrolliert, ob in ausgabe was drinn steht
wenn ja, print ausgabe

und diese sub als thread starten...
DAS sollte gehen oder?
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 15:41    Titel: Antworten mit Zitat

*seufz* .. vielen dank, aber nein, ich möchte auch keinen zusätzlichen thread.

Es gibt anscheinend 3 verschiedene Arten wie man eine funktion mit rückgabewert verlassen kann. "Return", "function" und den deklarierten namen der funktion.
Aber es muss doch eine möglichkeit geben den zugeordneten wert in der funktion auszuwerten..

(Wenn ihr noch mehr wege kennt eine funktion mit rückgabewert zu verlassen, bravo *lol*)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 24.09.2007, 15:45    Titel: Antworten mit Zitat

Hi OneCypher,
ich weis auch nicht was du da willst?
Möchtest du so etwas?
Code:
FUNCTION ausgabe (eingabe AS STRING) AS STRING
 ausgabe = eingabe + " Welt"
END FUNCTION

PRINT ausgabe("Hallo")
sleep

_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 15:56    Titel: Antworten mit Zitat

Oder man stelle sich folgendes vor:
Ich möchte eine funktion die einem pixel einen RGB-Wert übergibt.


Code:
declare function pixel(x as integer,y as integer) as uinteger

pixel(100,100) = RGB(255,255,255)

function pixel(x as integer, y as integer) as uinteger
 pset(x,y), pixel
end function


In dem beispiel möchte ich dem pixel, an der position x100, y100 die farbe "weiss" zuweisen.

.. ich denke.. ich gebs langsam auf. Aber meiner ansicht nach, schön wärs gewesen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 24.09.2007, 16:00    Titel: Antworten mit Zitat

Nenne mir bitte einen Grund, wieso du es auf diese Art machen möchtest, dann kann ich dir vielleicht auch weiterhelfen.
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 24.09.2007, 16:07    Titel: Antworten mit Zitat

Ich könnte mit funktionen so umgehen wie mit variablen. An einigen stellen in verschiedenen programmen bei mir säh das echt sexy aus.

Aber nur mal zum verständnis meiner logik:

Wenn eine funktion etwas ausgeben (per z.B. per RETURN XY) kann, warum sollte man einer funktion nicht auch etwas zuweisen können (und das nicht nur als parameter)?

Am elegantesten wäre es doch, wenn man eine funktion nicht von einer variable unterscheiden könnte. Nur das eine funktion noch mit den eingegebenen werten "arbeiten" kann.
Warum sollten functionen immer nur auf der rechten seite einer gleichung stehen dürfen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 24.09.2007, 16:17    Titel: Antworten mit Zitat

OneCypher hat Folgendes geschrieben:
Oder man stelle sich folgendes vor:
Ich möchte eine funktion die einem pixel einen RGB-Wert übergibt.


Code:
declare function pixel(x as integer,y as integer) as uinteger

pixel(100,100) = RGB(255,255,255)

function pixel(x as integer, y as integer) as uinteger
 pset(x,y), pixel
end function


In dem beispiel möchte ich dem pixel, an der position x100, y100 die farbe "weiss" zuweisen.

.. ich denke.. ich gebs langsam auf. Aber meiner ansicht nach, schön wärs gewesen...



Code:
declare function pixel(x as uinteger, y as uinteger, farbe as uinteger) as uinteger

Screen 18, 32

pixel(100, 100, RGB(255,255,255) )

function pixel(x as uinteger, y as uinteger, farbe as uinteger) as uinteger
 pset(x,y), farbe
end function


Sinnvoller wäre aber - erfüllt den gleichen Zweck:
Code:

#define pixel pset
Screen 18, 32
Pixel (100,100), RGB(255,255,255)


Ungetestet, sollte aber gehn
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 24.09.2007, 16:21    Titel: Antworten mit Zitat

OneCypher hat Folgendes geschrieben:
Am elegantesten wäre es doch, wenn man eine funktion nicht von einer variable unterscheiden könnte. Nur das eine funktion noch mit den eingegebenen werten "arbeiten" kann.
Warum sollten functionen immer nur auf der rechten seite einer gleichung stehen dürfen?

Dann geh zu C/C++ bei einigen Compilern soll das mit Klassen gehn. zwinkern
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 24.09.2007, 16:24    Titel: Antworten mit Zitat

Ähem, moment mal, mir is was eingefallen.
Das Vorhaben von OneCypher ist prinziepiell möglich, aber wohl nicht mehr ganz wie er es haben will...

Er könnte ein Array in Bildschirmgröße erstellen, und dieses dann stets PSetten, bzw, mit etwas kenntnissen direkt am ScreenPtr ausgeben oder Putten.

Dann wäre es prinzipiell möglich, aber das wären dann wirklich schon Variablen grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz