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:

Ein Feld aus Funktionen mit Parametern..

 
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: 30.01.2008, 15:38    Titel: Ein Feld aus Funktionen mit Parametern.. Antworten mit Zitat

ich weiss, ich reiz die thematik ziemlich aus.. aber mal folgendes beispiel:

Code:

declare function Fhallo() as string
declare function Fdu() as string
declare function Fda() as string
declare function Fend() as string

dim dna(1 to 100) as function as string
dna(1) = @Fhallo
dna(2) = @Fdu
dna(3) = @Fda
dna(4) = @Fend

for i as integer = 1 to 4
    print dna(i)()
next
sleep

function Fhallo() as string
    return "Hallo "
end function

function Fdu() as string
    return "du "
end function

function Fda() as string
    return "da "
end function

function Fend() as string
    return "!!!"
end function


Mir gehts jetzt nicht darum die selbe ausgabe zu erhalten, sondern meine frage wäre, wie könnte ich es realisieren jeder funktion (Fhallo() bis Fend()) einen oder mehrere parameter mitzugeben. Mein problem liegt speziell bei der übergabe des funktionsadresse an das array... (Zeile 7 bis 10) Da weiss ich nicht genau wie ich die parameter einer funktion an das array übergebe.. Vielleicht kann mir da jemand helfen, ohne das man den sinn oder unsinn dieses vorgehens in frage stellt happy

Ich denke mal, klar ist, das alle funktionen im array die selben parameterliste haben müssen. (oder geht das auch mit unterschiedlichen parametern?)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 30.01.2008, 15:46    Titel: Antworten mit Zitat

Zunächst einmal mußt Du in der Funktionsdeclaration die Parameter mit angeben:
Code:

Declare Function Hallo (param1 as Integer, Param2 as String) as String

und die dann in der Implementierung ebenfalls auflisten.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 30.01.2008, 15:52    Titel: Antworten mit Zitat

okay, soweit in ordnung.. wie gehts nach der deklaration weiter? Die implementierung ist ja grad mein problem..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 30.01.2008, 15:58    Titel: Antworten mit Zitat

Dann solltest Du Dich erstmal mit normalen Functions beschäftigen, und nicht gleich mit Funktionszeigern in Arrays.

Implementieren tut man so:
Code:
Function Hallo (param1 as Integer, Param2 as String) as String
Dim Foo as String
Foo =  string(param1, param2)
Return Foo
End Function


Aufrufen tut man dann so:
Code:

Dim Flupp as String
Flupp = Hallo (10, A)



oder auch

Code:

Print Hallo(10, A)

Ohne Gewähr grinsen Habs jetzt nicht auf Funktionsfähigkeit geprüft, sollte aber stimmen.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 30.01.2008, 16:12    Titel: Antworten mit Zitat

@Elektronix: HALLO?!? .. ich kann normale funktionen schreiben!! Ich will dir hier echt nicht zu nahe treten, aber ich fühl mich grade doch sehr deutlich verar...t!!
Ich weiss wie ich eine funktion deklariere! Ich weiss auch wie ich eine funktion implementiere!! ICH WEISS ABER NICHT WIE ICH EINEN ZEIGER AUF EINE FUNKTION MIT PARAMETER ERZEUGE!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 30.01.2008, 16:39    Titel: Antworten mit Zitat

OneCypher hat Folgendes geschrieben:
wie gehts nach der deklaration weiter? Die implementierung ist ja grad mein problem..

Hmmm, wo lag jetzt der Kommunikationsfehler? verwundert

Zeig doch mal, was Du schon versucht hast.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 30.01.2008, 16:42    Titel: Antworten mit Zitat

Code:
DECLARE FUNCTION HelloWorld (Anzahl As Integer) As String
FUNCTION HelloWorld (Anzahl As Integer) As String
    Dim as Integer i
    For i = 1 to Anzahl
        Print "Hallo World"
    next i
END FUNCTION

Dim func as Function (as integer) as String

func = @HelloWorld

Print func(4) ' Schreib 4x Hello World
sleep

_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 30.01.2008, 16:49    Titel: Antworten mit Zitat

Code:

declare function Fhallo(Zeile as integer) as string
declare function Fdu(Zeile as integer) as string
declare function Fda(Zeile as integer) as string
declare function Fend(Zeile as integer) as string

dim dna(1 to 100) as function as string 'Hier schätze ich mal fehlt was!
dna(1) = @Fhallo 'Hier wird auch was fehlen ....
dna(2) = @Fdu
dna(3) = @Fda
dna(4) = @Fend '.. bis einschließlich hier

for i as integer = 1 to 4
    print dna(i)(i) 'ob ich hier die funktion richtig aufrufe weiss ich ebenfalls nicht..
next
sleep

function Fhallo(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": Hallo "
end function

function Fdu(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": du "
end function

function Fda(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": da "
end function

function Fend(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": !!!"
end function


(Die Originalfunktionen lassen sich alle korrekt einzeln aufrufen, sind also korrekt deklariert und implementiert!)
als Ausgabe sollte erscheinen:

Zeile: 001: Hallo
Zeile: 002: du
Zeile: 003: da
Zeile: 004: !!!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 30.01.2008, 16:51    Titel: Antworten mit Zitat

@Stormy: Sieht nicht schlecht aus.. fehlt aber noch was entscheidendes.. "func" sollte ein array sein. z.B. 1 to 100...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 30.01.2008, 16:53    Titel: Antworten mit Zitat

ICH HABS! Danke stormy!, da hat die parameter-deklaration im zeiger gefehlt!!

Jetzt schauts so aus:

Code:


declare function Fhallo(Zeile as integer) as string
declare function Fdu(Zeile as integer) as string
declare function Fda(Zeile as integer) as string
declare function Fend(Zeile as integer) as string

dim dna(1 to 100) as function(Zeile as integer) as string
dna(1) = @Fhallo
dna(2) = @Fdu
dna(3) = @Fda
dna(4) = @Fend
for i as integer = 1 to 4
    print dna(i)(i)
next

sleep

function Fhallo(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": Hallo "
end function

function Fdu(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": du "
end function

function Fda(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": da "
end function

function Fend(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": !!!"
end function
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 30.01.2008, 17:00    Titel: Antworten mit Zitat

Um dem Unsinn zu krönen:

Code:


declare function Fhallo(Zeile as integer) as string
declare function Fdu(Zeile as integer) as string
declare function Fda(Zeile as integer) as string
declare function Fend(Zeile as integer) as string

dim dna(1 to 100) as function(Zeile as integer) as string 'Hier schätze ich mal fehlt was!
for i as integer = 1 to 100
   
    select case int(rnd*4 +1)
    case 1
        dna(i) = @Fhallo
    case 2
        dna(i) = @Fdu
    case 3
        dna(i) = @Fda
    case 4
        dna(i) = @Fend
    end select
    'dna(i) = @Fhallo 'Hier wird auch was fehlen ....
next

for i as integer = 1 to 100
    print dna(i)(i)
next

sleep

function Fhallo(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": Hallo "
end function

function Fdu(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": du "
end function

function Fda(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": da "
end function

function Fend(Zeile as integer) as string
    return "Zeile: " & right(str(1000+Zeile),3) & ": !!!"
end function



-> ein array aus zufällig zusammengewürfelten funktionen.. hmm.. das regt doch die fantasie an lächeln
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
Seite 1 von 1

 
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