11. december 2003 - 12:02Der er
12 kommentarer og 1 løsning
oprettelse og arbejde med array
hej! jeg vil gerne oprette et string array på basis af en list control
Derefter vil jeg udskrive den til debug.print eller bare msgbox. (Er ved at teste det) følgende er rimeligt logisk for mig
Dim i, x, queueCnt As Integer queueCnt = lstQueueSelected.ListCount Dim Queue(queueCnt) As String x = 0 For i = 1 To (lstQueueSelected.ListCount - 1) Queue(x) = lstQueueSelected.List(i) x = z + 1
Next i For i = LBound(Queue) To UBound(queueCnt) MsgBox Queue(i) Next
DENNE SÆTNING FOR JEG IKKE LOV TIL. Dim Queue(queueCnt) As String
det betyder at hvis jeg asnvender lbound ubound vil den loope igennem alle de predefinerede elementer jeg har allokeret til mit array.
jeg ved man ikke dynamisk kan allokere et array i vb, men er der ikke en smartere måde med lige netop denne problem stilling.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Der kan godt i VB5 og fremefter anvendes dynamisk array. Kig under 'Redim Preserve' i hjælpen.
Jeg anbefaler at du dimensionerer dine variable i et modul fremfor i formen, men det er tildels en smagssag. Anvender du mere en én form i dit projekt og ønsker værdier overført mellem forme, er det det bedste med 'Global' i et modul. At dimensionere i en subrutine skal der være en MEGET god grund til, gør det under Generel, hvis du gør det i formen.
Det var vist en taste fejl med det "z" mener du at variable generalt skal defineres i et modul som global... Gælder det alle variabler og array's i mit program.
Dim i as integer Dim Queue() As String redim Queue(lstQueueSelected.ListCount) For i = 0 To UBound(queueCnt) Queue(i) = lstQueueSelected.List(i) MsgBox Queue(i) Next i
Om du vil dim'mme i moduler eller ej er en smagssag. joern kan lide det, jeg gør det aldrig. Du kan sagtens "få fat" i variabler imellem forms, selvom de er dim'met i de enkelte forms og ikke i et modul. Men selvdefinerede typer skal defineres i et modul
Jeg selv bruger kun moduler til at definere procedurer og functioner, der genbruges i forskellige programmer. Men det er en smagssag. Der vil være lidt at snakke om mht. performance, hvorvidt en variabel bør erklæres som global hvis den kun bruges som lokal variabel. Men næppe noget måleligt i dit project :o)
Øv - tastefejl. I min "lidt mere enkelt" mente jeg:
Dim i as integer Dim Queue() As String redim Queue(lstQueueSelected.ListCount) For i = 0 To UBound(Queue) Queue(i) = lstQueueSelected.List(i) MsgBox Queue(i) Next i
Ok nu vi er her med array's jeg har et class modul hvor jeg gerne vil have overført mit Queue array til en funktion i denne class. kan det lade sig gøre med property let, property get. koden i classen ser således ud.
Private Sub Class_Terminate() 'rs.Close End Sub
Public Property Get QueueName() As Variant ' CheckQueue (QueueName) End Property
Public Property Let QueueName(ByVal vNewV) Dim Que Que = vNewValue
CheckQueue (Que) End Property Private Function CheckQueue(QueueName) Dim Conn As ADODB.Connection Dim rs As ADODB.Recordset
Set Conn = New ADODB.Connection Set rs = New ADODB.Recordset strConn = "Driver={SQL Server}; Server=SOVS; Option=16834; Database=mindb;"
Conn.Open strConn, "minuser", "mitpasswd" Dim testQueue As Byte
sqlstr = "select name,id,state from Queue" _ & " where name = '" & QueueName & "'"
Debug.Print sqlstr rs.Open sqlstr, Conn Do While Not rs.EOF
testQueue = rs!State If testQueue = 4 Then MsgBox "queue are stopped:" & rs!Name End If rs.MoveNext DoEvents
Loop End Function jeg kunne sagtens lave det i et modul det ville være nemmere, men jeg vil lave en dll, eller activeX som jeg kan genbruge i aqndre projekter. Så jeg leger lidt med de class ting. (har rodet lidt med det i c++ for år siden) Så jeg kender lidt til hvad det handler om.
jeg ville bare høre hvordan man overførte et array til en property i en class. Men ved nærmere eftertanke så høre det et andet spørgsmål ved. Så her er points og tak for hjælpen... :-)
Sødt af dig at ville dele, men det skal vi ikke ind på. Spørgeren bestemmer hvad der hjælper ham bedst. M.v.h. Jørn
Synes godt om
Ny brugerNybegynder
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.