Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 30.01.2008, 15:38 Titel: Ein Feld aus Funktionen mit Parametern.. |
|
|
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
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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 30.01.2008, 15:46 Titel: |
|
|
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 |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 30.01.2008, 15:52 Titel: |
|
|
okay, soweit in ordnung.. wie gehts nach der deklaration weiter? Die implementierung ist ja grad mein problem.. |
|
Nach oben |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 30.01.2008, 15:58 Titel: |
|
|
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
Ohne Gewähr Habs jetzt nicht auf Funktionsfähigkeit geprüft, sollte aber stimmen. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 30.01.2008, 16:12 Titel: |
|
|
@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 |
|
 |
Elektronix
Anmeldungsdatum: 29.06.2006 Beiträge: 742
|
Verfasst am: 30.01.2008, 16:39 Titel: |
|
|
OneCypher hat Folgendes geschrieben: | wie gehts nach der deklaration weiter? Die implementierung ist ja grad mein problem.. |
Hmmm, wo lag jetzt der Kommunikationsfehler?
Zeig doch mal, was Du schon versucht hast. _________________ Und die Grundgebihr is aa scho drin- DOS is jo nett. |
|
Nach oben |
|
 |
Stormy

Anmeldungsdatum: 10.09.2004 Beiträge: 567 Wohnort: Sachsen - wo die schönen Frauen wachsen ;)
|
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 30.01.2008, 16:49 Titel: |
|
|
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 |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 30.01.2008, 16:51 Titel: |
|
|
@Stormy: Sieht nicht schlecht aus.. fehlt aber noch was entscheidendes.. "func" sollte ein array sein. z.B. 1 to 100... |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 30.01.2008, 16:53 Titel: |
|
|
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 |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 30.01.2008, 17:00 Titel: |
|
|
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  |
|
Nach oben |
|
 |
|