return (array)
Übersicht

![]() |
regaaBetreff: return (array) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ist es möglich das eine Function ein Array zurückgibt? Wenn nicht, kann man das mittels einer eigenen Function hinkriegen? | ||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Arrays sind immer Global, da brauchst du eigentlich gar nichts zurück zu geben. Wenn du ein Array in einer Funktion abänderst kannst du von aussen ganz normal wieder auf das Array zugreifen.
Was jedoch geht sind Types zurückliefern. Viele Leute machen es immer so das sie das Handle eines Objekts übergeben. Code: [AUSKLAPPEN] Return Handle(objekt)
Man kann aber auch das Objekt selber zurückgeben: Code: [AUSKLAPPEN] Type test Field name$ End Type Function GetTest.test() obj.test = new test test\name$ = "Bla" Return obj End Function |
||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jo, danke für die superschnelle antwort. Hmm, jetzt fehlt mir nur noch das wissen wie ich diesen Returnten Wert in einer Variable abfangen kann, um das nachher zum beispiel zu printen? | ||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hintergrund ist der, das ich die explode function aus php brauche *unbedingt*, so und dann hab ich folgendes zusammengebastelt:
Function explode(zeichen$, sstring$, limit) start_var_pos=0 For i3=0 To limit pos_zeichen_1=Instr(sstring$,zeichen$,1+start_var_pos) pos_zeichen_2=Instr(sstring$,zeichen$,1+pos_zeichen_1) anz=pos_zeichen_2-pos_zeichen_1 ergebnis$(i3)=Mid$(sstring$,2+start_var_pos,anz-1) start_var=anz start_var_pos=start_var_pos+start_var Next ;Return (ergebnis$) arrays sind global End Function Aufrufen tu ich das so explode("-", inhalt$, 5) und später die arrays zuordnen: ress1_verdienst#=ergebnis$(0) ress2_verdienst#=ergebnis$(1) ress3_verdienst#=ergebnis$(2) ress4_verdienst#=ergebnis$(3) ress5_verdienst#=ergebnis$(4) ress6_verdienst#=ergebnis$(5) Aber ich wollt das halt so haben, das man in der function etwas returned, um das später einfach sauber aus einem array alles auszulesen, halt so wie in php, naja das was ich hier zusammengecodet hab funzt zwar auch, aber ich wollt, das halt so machen wie in php. PS: Wie rück ich den Code ein in diesem post? Leerzeichen werden getrimt, und tabs zuweit gerückt. |
||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
das geht natürlich aber nur eine Variable obwohl das auch anders geht, gibt da viele Möglichkeiten
Code: [AUSKLAPPEN] 1. variante
x= blablafunction() Print x 2. variante Print blablafunction() function blablafunction() return Array(Zaehler) end function oder so... Code: [AUSKLAPPEN] x= blablafunction()
Print Array(x) function blablafunction() return Zaehler end function oh hab nicht aufgepasst , hast ja in der Zwischenteit was gepostet |
||
[BB2D | BB3D | BB+]
|
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, danke dir!! Ja dann hab ich ne ganz normale zahl returned, ich wollt aber ein ganzes array, oder hätte gern ne antwort auf den 3 post (also den zweiten von mir). | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
es geht nur ein wert mit return zurück!
Ganze arrays ist so.. nicht möglich eine möglichkeit wäre es nur einen Wert zu berechnen und diesen zurückgeben das solange wiederholen bis alle werte abgearbeitet sind aber denke das sich das nur lohnt wenn die function von vielen stellen aufgerufen wird |
||
[BB2D | BB3D | BB+]
|
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja gut dann komm ich eben mit meiner Lösung aus, danke euch allen.
mfg regaa |
||
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mit einer kombination aus 2 funktionen bekommt man das eigentlich ganz gut hin:
Code: [AUSKLAPPEN] Function Parse$( Message$, Item, Sep$ = "," )
I = 1 Repeat Txt2$ = Mid(Message$,I,1) If Txt2$ <> Sep$ Then Txt3$ = Txt3$ + Txt2$ Else If Pos = Item Then Done = True Else Pos = Pos + 1 Txt3$ = "" EndIf EndIf I = I + 1 Until Done = True Or I > Len(Message$) Return Txt3$ End Function Function CountItems( Message$, Sep$ ) For A = 1 To Len(Message$) If Mid(Message$, A, 1) = Sep$ Count = Count + 1 EndIf Next Count = Count + 1 Return Count End Function anwendungsbeispiel: Code: [AUSKLAPPEN] Param1$="laber,schwafel,sülz,bla,text"
For i = 0 To CountItems(Param1,",") Print Parse(Param1, i, ",") Next würde jetzt jedes einzelne element nacheinander ausgeben... ist zwar nicht soo schön komfortabel wie in php, aber eine ganz gute lösung. |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ojay's Version ist wahrscheinlich die beste ![]() Es würde auch noch diese Möglichkeit geben: Code: [AUSKLAPPEN] Type result
Field resarray$[100] End Type Function explode.result(zeichen$, sstring$, limit) res.result = New result pos_zeichen_1 = Instr(sstring$,zeichen$,1) If pos_zeichen_1 = 0 Then res\resarray[0] = sstring$ : Return res res\resarray[0] = Mid$(sstring$,1,pos_zeichen_1 - 1) start_var_pos=0 For i3=1 To limit pos_zeichen_1=Instr(sstring$,zeichen$,1+start_var_pos) pos_zeichen_2=Instr(sstring$,zeichen$,1+pos_zeichen_1) anz=pos_zeichen_2-pos_zeichen_1 res\resarray[i3] = Mid$(sstring$,pos_zeichen_1 + 1,anz-1) start_var_pos = pos_zeichen_1 Next Return res End Function myres.result = explode.result("-", "1-20-3-500-30000-2000", 5) wert1$ = myres\resarray[0] wert2$ = myres\resarray[1] wert5$ = myres\resarray[4] wert6$ = myres\resarray[5] Print wert1$ Print wert2$ Print wert5$ Print wert6$ WaitKey() ;Wenn es nicht mehr gebraucht wird, das Objekt löschen. ;Oder je nachdem wie es gebraucht wird erst am Ende des Programms ;alle löschen. Delete Each result End PS: Ich hab mir erlaubt deinen Code etwas abzuändern, so das wenn es gar keine Trennzeichen gibt der Ganze String in array index 0 zurückgegeben wird. |
||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab das ganze etwas modifiziert so das mman limit nicht mehr angeben braucht, eben optional, aber da hätt ich ne frage, und zwar wollt ich dann auch eine sizeof, oder ocunt funktion für schreiben aber wenn ich ne vari vom typen in einer funktion verwendet gibts die fehlermeldung, variable must be a type. ![]() |
||
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, hab das Problem gelöst. 8) | ||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
blitzarrays kannst du zurückliefern - da hast du aber immer statische dimensiongröße
steht in hilfe/tutorial/undokumentierte features |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group