Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Skicka en array till en function

Postades av 2003-07-27 13:45:07 - Michael Beckius, i forum visual basic - allmänt, Tråden har 11 Kommentarer och lästs av 684 personer

Jag har en multidimensionell array som jag vill kunna skicka med till en function. Är det möjligt att göra det och i så fall hur?

Det går iofs att komma runt problemet med att göra denna array global, men jag behöver denna function som jag ska kunna använda var som helst och då måste jag kunna skicka med mina arrays till min function när jag anropar den.


Svara

Sv: Skicka en array till en function

Postades av 2003-07-27 14:15:46 - Sven Åke Persson

Det är ingen bra lösning,överhuvudtaget skall man undvika multidimmensionella arrayer.Kolla om du inte kan göra den endimmensionell , tex på fack 100
börjar dimmension 2. Eller ändå bättre gör tex 4 endimensionella istället.Om du behöver det

Gör arrayen Global i den Form den verkar.

Har aldrig skickat 2 dimmensionel, 1 dimmensionell går bra , orkar inte just nu
det finns flera krafter där ute.


Svara

Sv: Skicka en array till en function

Postades av 2003-07-27 23:09:50 - Michael Beckius

Någon annan som vet hur man gör detta (om möjligt)?


Svara

Sv: Skicka en array till en function

Postades av 2003-07-28 13:08:21 - Andreas Hillqvist

Vad är det för array? GVilken version av VB använder du?

I vb 5 an du bar skicka variantarrayer:
<code>
Sub Test
Dim Test As Variant
Redim Test(1 to 10, 1 to 10)
End Sub

Function DoStuff(Data As Variant)

End Function
</code>
I vb 6 kan du skicka deklarerade arrayer:
<code>
Sub Test
Dim Test() As String
Redim Test(1 to 10, 1 to 10)
End Sub

Function DoStuff(Data() As String)

End Function
</code>
Kan även retunera array:
<code>
Function GetArray() As String()
Dim Result() As String
Redim Result(1 to 10, 1 to 10)
GetArray = Result
End Function

Sub Test
Dim Test() As String
Test = GetArray
End Sub
</code>


Svara

Sv: Skicka en array till en function

Postades av 2003-07-28 13:54:58 - Niklas Jansson

Om man inte specificerar storleken för dimensionerna i anropet, hur tusan får man fram hur många det är?
Typsäkerheten går ju åt skogen!


Svara

Sv: Skicka en array till en function

Postades av 2003-07-28 16:12:54 - Andreas Hillqvist

LBound() och UBound() funktionen. Eller vad menar du?


Svara

Sv: Skicka en array till en function

Postades av 2003-07-28 18:20:41 - Niklas Jansson

Nej, om du skickar en array av typen (1 to 10) eller en (1 to 10, 1 to 10), hur vet VB hur många dimensioner den har och hur använder man dimensionerna?

Låt säga att jag har en

Public Sub Ba()
Dim k() As Long
ReDim k(1 To 10, 1 To 10) As Long

Bu k
End Sub

Public Sub Bu (A() As Long)

'Hur fan använder man A här?

End Sub


Svara

Sv: Skicka en array till en function

Postades av 2003-07-28 23:16:17 - Andreas Hillqvist

MAn kan testa om UBound/LBound ger fel:

T,Ex.
<code>

Public Sub Test()
Dim Data
ReDim Data(1 To 3)
Data(1) = "A"
Data(2) = "B"
Data(3) = "C"

ListData Data

ReDim Data(1 To 3, 1 To 3)
Data(1, 1) = "A:A"
Data(1, 2) = "A:B"
Data(1, 3) = "A:C"
Data(2, 1) = "B:A"
Data(2, 2) = "B:B"
Data(2, 3) = "B:C"
Data(3, 1) = "C:A"
Data(3, 2) = "C:B"
Data(3, 3) = "C:C"

ListData Data

End Sub

Function ListData(Data)
Dim x As Long
Dim y As Long
Select Case ArrayDimensions(Data)
Case 1
For x = LBound(Data) To UBound(Data)
Debug.Print Data(x)
Next
Case 2
For x = LBound(Data, 1) To UBound(Data, 1)
For y = LBound(Data, 1) To UBound(Data, 1)
Debug.Print Data(x, y), ;
Next
Debug.Print
Next
End Select

End Function

Function ArrayDimensions(Data) As Long
Dim x As Long
On Error GoTo Done
x = LBound(Data, 1)
ArrayDimensions = 1

x = LBound(Data, 2)
ArrayDimensions = 2

x = LBound(Data, 3)
ArrayDimensions = 3

x = LBound(Data, 4)
ArrayDimensions = 4

x = LBound(Data, 5)
ArrayDimensions = 5

'Overflow
x = LBound(Data, 6)
ArrayDimensions = -1

Done:

End Function

</code>


Svara

Sv: Skicka en array till en function

Postades av 2003-07-29 00:08:06 - Niklas Jansson

Rysligt, men ok...

Det måste vara en av de värsta "typsäkerhetskrångligheterna" som finns. Och så ineffektivt VB måste sköta problemet, dels en förbannat massa overhead, dels nästan fullständigt omöjligt att optimera...


Svara

Sv: Skicka en array till en function

Postades av 2003-07-29 12:16:45 - Andreas Hillqvist

Hur löser man det i andra språk? Varför ha arrayer med olika antal dimensioner. att skicka det som argument tycker jag är fel.


Svara

Sv: Skicka en array till en function

Postades av 2003-07-29 12:32:30 - Niklas Jansson

I C löser man det till exempel så här:

int funktion(int arg[][20], int n)

eller

int funktion(int **arg, int n, int m)

I C++ kunde man t.ex. använt en vector<vector<int> >

Observera att i första fallet så blir det både effektivt och lättskrivet, eftersom kompilatorn vet exakt hur den ska hantera arrayen. I det sista fallet blir det inte fullt lika effektivt.

>Varför ha arrayer med olika antal dimensioner. att skicka det som argument tycker jag är fel.
Ja, det gör jag med, men det går ju tydligen i VB, och därför så missar man ju typsäkerheten. I C-fallen ovan vet kompilatorn exakt hur det skall fungera, och i C++-fallet ligger ansvaret på den som skrivit vector, så kompilatorn behöver inte se till att det finns någon run-time-information.


Svara

Sv: Skicka en array till en function

Postades av 2003-07-29 15:40:48 - Anders Eidergard

Du kunde börja med Collection-classes istället så slipper du allt det här mecket med att kolla typer. Kolla i MSDN efter det. Eller på nätet.

/Egget


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 165
27 952
271 704
717
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies