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


Skriva ut en array från en modul!

Postades av 2004-04-22 14:29:47 - Mikael Svensson, i forum visual basic - allmänt, Tråden har 6 Kommentarer och lästs av 736 personer

Provade denna ex. kod:

Private Sub cmdMyButton_Click()
Dim strMembers(1 To 3) As String
strMembers(1) = "Kalle"
strMembers(2) = "Pelle"
strMembers(3) = "Lisa"
Welcome strMembers, "Hej "
End Sub

Sub Welcome(strNames() As String, strGreeting As String)
Dim lngLower As Long
Dim lngUpper As Long
Dim lngX As Long
lngLower = LBound(strNames)
lngUpper = UBound(strNames)
For lngX = lngLower To lngUpper
MsgBox strGreeting & strNames(lngX)
Next lngX
End Sub

fast la in sub i en modul kallad Public Function Welcom.

Nu är det så att jag provade att byta ut MsgBoxe i modulen till en Textbox men då fick jag medelandet Object requierd, varför?

Jag har en text ruta i formen!

Tillägg, den funkar om jag har msgboxen...

MVH Mikael svensson


Svara

Sv: Skriva ut en array från en modul!

Postades av 2004-04-22 15:26:54 - Sven Åke Persson

Prova det här du måste tala om var i detta fall Text1 finns
<code>
Option Explicit
'Text1 MultiLine = True
Private Sub cmdMyButton_Click()
Dim strMembers(1 To 3) As String
strMembers(1) = "Kalle"
strMembers(2) = "Pelle"
strMembers(3) = "Lisa"
Text1.Text = ""
Call Welcome(strMembers, "Hej ")
End Sub

'BasModul Sub
Sub Welcome(strNames() As String, ByVal strGreeting As String)
Dim lngLower As Long
Dim lngUpper As Long
Dim lngX As Long
lngLower = LBound(strNames)
lngUpper = UBound(strNames)
For lngX = lngLower To lngUpper
Form1.Text1.Text = Form1.Text1.Text _
& strGreeting _
& strNames(lngX) _
& vbCrLf
Next 'lngX
End Sub
</code>


Svara

Sv: Skriva ut en array från en modul!

Postades av 2004-04-22 17:22:22 - Mikael Svensson

Tack för ditt svar Sven!

En fråga bara, du la till " ByVal " till " strGreeting As String " varför?

Och vad är det för skillnad på att använda Public function och sub?

Är något bättre än det andra?

MVH Mikael svensson


Svara

Sv: Skriva ut en array från en modul!

Postades av 2004-04-23 01:28:00 - Andreas Hillqvist

Gör inte Join() funktionen jobbet åt dig?
<code>
Option Explicit
''Text1 MultiLine = True

Private Sub cmdMyButton_Click()
Dim strMembers() As String
ReDim strMembers(1 to 3)

strMembers(1) = "Kalle"
strMembers(2) = "Pelle"
strMembers(3) = "Lisa"

Text1.Text = "Hej " & Join(strMembers, ", ")
End Sub
</code>


Svara

Sv: Skriva ut en array från en modul!

Postades av 2004-04-23 07:45:28 - Sven Åke Persson

>En fråga bara, du la till " ByVal " till " strGreeting As String " varför?

Det har jag som grundregel,då skickar jag det sanna värdet till strGreeting.
Om jag inte skriver ByVal så skickar man egentligen adressen där i ditt
fall strMember står. Det kan då bli konflikt om du har fler variabler som är döpta till strMember.

Vidare så blir det strul om du ändrar på variabelns värde i den Public Sub du skickat den till.
I ditt exempel hade det funkat vilket som.Rekommenderar att alltid skicka ByVal.
När du skickar från VB till en API i C mfl .dll så vill den ha värdet ByVal i 99 % av alla fall.

Men Obs en array som du skickar skall alltid skickas som du gör ByReference
Dvs Arrayer kan inte skickas ByVal

Sub och Public är samma sak dvs Public är underförstått om du bara skriver Sub.

mvh
Sven


Svara

Sv: Skriva ut en array från en modul!

Postades av 2004-04-25 14:23:43 - Mikael Svensson

Hej Sven!
Tack för ditt svar, det gav mig lite mer klarhet i hur det fungerar!
MVH Mikael Svensson


Svara

Sv: Skriva ut en array från en modul!

Postades av 2004-04-26 14:00:26 - Anders Eidergard

Tycker inte att man kan säga att man alltid ska skicka parametrar ByVal.

Skicka ByVal om du inte behöver/vill förändra värdet på den parameter du skickar in.
Bra att ha så man inte oavsiktligt förändrar värdet heller, så grundtanken som Sven har är ju bra. Bra om man tänker till innan bara.

Skicka ByRef om värdet ska kunna förändras.
Om man skickar ett objekt i en parameter går det lite snabbare om man skickar ByRef eftersom objektets reference counter inte ökas och minskas när man går in resp. ur proceduren.
Att skicka ett objekt som ByVal hindrar inte heller från att subobjekt kan modifieras, exempelvis innehållet i en Dictionary som man skickar in i en procedur.
Exempelvis ger förändrar båda procedurerna innehållet i objektet:
(Dictionary finns i "Microsoft Scripting Runtime")
<code>
Private Sub Command1_Click()
Dim col As New Dictionary
col.Add "Test", "Test av ByRef & ByVal"
Call TestByVal(col)
Debug.Print col.Item("Test")
Call TestByRef(col)
Debug.Print col.Item("Test")
End Sub


Private Sub TestByVal(ByVal col As Dictionary)
col.Item("Test") = col.Item("Test") & ", ByVal först"
End Sub

Private Sub TestByRef(ByRef col As Dictionary)
col.Item("Test") = col.Item("Test") & " och ByRef sen"
End Sub

</code>

Som sagt....tänk efter vad du har för behov innan du väljer om du ska ha ByRef eller ByVal.

/Egget


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

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 570 699
27 958
271 741
770
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