Avatar billede winkill Nybegynder
04. november 1999 - 17:22 Der er 11 kommentarer og
1 løsning

Function in reverse...!?!

Hvordan skal jeg nu beskrive mit spørgsmål ?!? (Der gives ikke point for dette *GG*)

Okey, jeg har eks. lavet en simpel funktion der deler en String i to.

Function StrSplit(StrA as String, StrB as String, Second as Boolean)
Dim I as Integer
I = InStr(1, StrA, StrB)
If Not Second Then
    StrSplit = Mid(StrA, 1, I - 1)
Else
    StrSplit = Mid(StrA, I + 1)
End If
End Function

Kaldes StrSplit først med
StrSplit("Test1#Test2", False)
..så returnerer den "Test1"
StrSplit("Test1#Test2", True)
..så returnerer den "Test2"

Hvordan laver jeg dette med ét kald til funktionen???
Altså sådan at "Test1" bliver gæmt i FirstStr og "Test2" bliver gemt i SecondStr...
Avatar billede januskh Nybegynder
04. november 1999 - 19:56 #1
Hej Winkill

Nogenlunde således:

Private Function SplitStr(byval Input as string, byval second as boolean) as string

Dim halvvejs as long

halvejs = len(input) / 2
if second = false then
  SplitStr = left$(input, halvvejs)
  Exit Function
Else
  SplitStr = right$(input, halvvejs)
Endif

End Function

----------------
God fornøjelse

Med venlig hilsen

Janus Kamp Hansen
Systemudvilker og Webmaster
EDB-Afdelingen
Nordisk Solar A/S
Avatar billede winkill Nybegynder
04. november 1999 - 20:03 #2
Januskh >> Hvad er forskellen på din og min funktion ud over at din returnerer halvdelen af string'en.
Jeg kan stadigt ikke få begge halvdele i hver sin string uden at skulle kalde funktionen to gange.
Avatar billede januskh Nybegynder
04. november 1999 - 20:03 #3
Okey... jeg overså at det skulle være i et kald...

lav resultatet af funktionen om til en variant og inde i rutinen hvor den skal returnere resultatet, kan du gøre således:


Dim Resultat(1) as string

Resultat(0) = left$(input, halvvejs)
Resultat(1) = right$(input, halvvejs)

SplitStr = Resultat

Ovre i modtager Sub-rutinen skal du så bare have en lignende string til at modtage resultatet.

Eks:

Dim Splittede(1) as string
Splittede = SplitStr("Test1#Test2")

Splittede(0) vil være lig "Test1" og
Splittede(1) vil være lig "Test2".

Med venlig hilsen

Janus Kamp Hansen
Systemudvilker og Webmaster
EDB-Afdelingen
Nordisk Solar A/S



Avatar billede winkill Nybegynder
04. november 1999 - 20:04 #4
..by the way, hvis man kalder din funktion med en String på ulige længde (Eks. Len=3, 5, 7...) så returnerer den midter tegnet to gange.
Avatar billede winkill Nybegynder
04. november 1999 - 20:05 #5
Ups... vi skriver i tasterne på hinanden, jeg ser lige på det ;o)
Avatar billede januskh Nybegynder
04. november 1999 - 20:11 #6
hehe... hvad med at vi ringede... :)
Avatar billede winkill Nybegynder
04. november 1999 - 20:54 #7
Der opstod en kompileringsfejl:
Der kan ikke tildeles til matrixen.
Avatar billede winkill Nybegynder
04. november 1999 - 20:56 #8
Er på arbejde... Kan jeg ringe til dig? Er det dit nummer jeg kan se som tabt opkald?
Avatar billede januskh Nybegynder
05. november 1999 - 07:57 #9
Ja, det er det nummer...
Avatar billede januskh Nybegynder
05. november 1999 - 08:08 #10
Her er så den endelige rutine.. testet og det hele..

Option Explicit

Private Sub Command1_Click()
Dim Retur As Variant
  Retur = SplitStr("TEST1#TEST2")
  MsgBox Retur(0)
  MsgBox Retur(1)
End Sub

Private Function SplitStr(ByVal Inputt As String) As Variant
  Dim Resultt() As String
  ReDim Resultt(1) As String
  Resultt(0) = Left$(Inputt, Len(Inputt) / 2)
  Resultt(1) = Right$(Inputt, Len(Inputt) / 2)
  SplitStr = Resultt
End Function

Med venlig hilsen

Janus Kamp Hansen
Systemudvilker og Webmaster
EDB-Afdelingen
Nordisk Solar A/S





Avatar billede winkill Nybegynder
05. november 1999 - 08:49 #11
Det blev lidt sent inden jeg var hjemme... anyway, nu har jeg afprøvet rutinen og det kører perfekt. Problemet med det jeg selv havde lavet var at jeg prøvede at jeg prøvede at returnerer en String Array til en String - jeg må virkeligt have været træt igår aften ;)
Tak for hjælpen.
Avatar billede januskh Nybegynder
07. november 1999 - 15:22 #12
Anytime... ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester