--- Dim intI as Integer Dim blnTest as Boolean blnTest = False ' ikke ens som default
For intI = 1 to Len(strStringArray()) If (strStringArray1() = Mid(strStringArray(), intI, Len(strStringArray1()))) Then blnTest = True ' er ens End If Next intI
' CHECK OM DE ER ENS If (blnTest) Then ' Hvis de er ens ' Udfør handling Else ' Hvis de ikke er ens ' Udfør handling End if ---
dog jeg har ikke VB her på kontoret, så jeg kan ikke teste det, så håber det virker? :-)
må ærligt indrømme at jeg plejer ikke at bruge arrays, bruger kun hele strenge.. hvis dette ikke virker, skal jeg prøve at lave et checkup sådan hvor du ikke bruger arrays:
Dim intI, intJ as Integer Dim blnTest as Boolean blnTest = False ' ikke ens som default
For intI = 1 To Len(strStringArray1()) For IntJ = 1 To Len(strStringArray1(intI)) If (strStringArray1(intI) = Mid(strStringArray(intI), intJ, Len(strStringArray1(intI)))) Then blnTest = True ' er ens End If Next intJ Next intI
' CHECK OM DE ER ENS If (blnTest) Then ' Hvis de er ens ' Udfør handling Else ' Hvis de ikke er ens ' Udfør handling End if
Dim intI, intJ, intK as Integer Dim blnTest as Boolean blnTest = False ' ikke ens som default
For intI = 1 to Len(TextBox2.Text) If (Mid(TextBox2.Text, intI, 1) = " ") Then intK = intI If (Mid(TextBox2.Text, 1, (intI - 1)) = Mid(TextBox1.Text, 1, (intI - 1))) Then blnTest = True ' er ens End If End If Next intI
For intJ = intK To Len(TextBox2.Text) If (Mid(TextBox2.Text, intI, 1) = " ") Then If (Mid(TextBox2.Text, (intK + 1), (intJ - intK)) = Mid(TextBox1.Text, 1, (intJ - intK))) Then blnTest = True ' er ens End If End If Next intJ
' CHECK OM DE ER ENS If (blnTest) Then ' Hvis de er ens ' Udfør handling Else ' Hvis de ikke er ens ' Udfør handling End if
hvis det så heller ikke virker, må jeg bare kigge på det når jeg kommer hjem - hvis altså ingen har hjulpet dig med det før det.. :-)
virker det så når du bruger textbox checken istedet for array check? for hvis ikke, tror jeg ikke jeg kan hjælpe dig mere lige nu i øjeblikket.. bliver nok nødt til at komme hjem til min egen computer med VB..
jeg forstår mig åbenbart ikke helt på arrays og hvordan du laver for loops med dem, fordi jeg kunne kun forestille mig at den linje ville virke.. der mangler en index, hvis du har forstand på at fikse det ;-)
problemet er bare at jeg ikke kan sætte en index på når jeg skal tjekke hele strengen.. jeg kigger på det efter arbejde, ellers håber jeg bare på at det seneste jeg skrev, virker.. - messy, men muligt.. :-)
den tjekker først alle chars i textbox2 efter mellemrum, og når den finder et, tager den alt før mellemrummet og sammenligner med den samme længde i starten af første textbox..
derefter tjekker den efter det næste mellerum, og når den finder et, tager den alt før mellemrummet (hen til det første mellemrum) - bemærk: dette ville være problematisk hvis der ville være flere end 2 mellemrum (mere end 3 strenge)..
der er nogle problemer med denne kode, som jeg kan løse med lidt tid (hvis jeg var hjemme ville jeg have mulighed for at bruge arrays, som ville lette meget på problemet).. men jeg må lige vide hvor dynamisk disse textbokse er.. kan der være mulighed for at der kommer mere end 3 forekomster i textbox2? kan textboksene starte med andet end servernavne?
hvis jeg skal lave denne funktion helt perfekt, bliver jeg sikkert nødt til at finde ud af alt helt præcist hvad du skal bruge det til (eller forklaring om hvordan textboksene vil blive formateret - om det altid er det samme, om det kan se anderledes ud, osv.)
du kan også lave det sådan som du siger at du tager servernavnet fra textbox1, men det ville være en del sværere, da du så skulle tage kun en del af hver linje, hvorimod hvis du tjekker fra textbox2, har du en hel linje, du skal sammenligne med den anden..
konklusion (siden jeg har en tendens til at snakke sort): hvis dine textbokse kan blive mere dynamiske, vil jeg gerne hjælpe mere når jeg kommer hjem engang i aften. Men jeg får ikke hjulpet dig så meget mere, mens jeg er på arbejde.
dvs. at istedet for følgende du skrev i spørgsmålet (øverst oppe): "hvis servernavn i textbox1 eksisterer i textbox 2 skal linie fra textbox1 kopires over til textbox3 "
skal være "hvis servernavn i textbox1 _ikke_ eksisterer i textbox 2 skal linie fra textbox1 kopires over til textbox3 "
?
du kan sende mig mail på webpsycho at gmail dot com, men jeg kan ikke læse vb filerne før jeg kommer hjem..
og hvis du vil splitte arrays, ville det være nemmere at splitte dem 2 gange - en gang ved ":" for at adskille linjerne, og så igen ved ";" for at adskille servernavn/ip/mac.. på den måde kan du sammenligne arr[0][0], arr[1][0], arr[2][0] osv.. (sikkert ikke opsat på den måde i vb) jeg ved ikke meget om arrays i vb, men jeg kender om princippet, da jeg bruger dem i andre programmeringssprog.. ved bare ikke helt hvordan du vil tjekke op på dem, siden det ser ud til at man altid på indeksere dem (selv i for loops)..
hvis du vil have det løst uden arrays, kan jeg helt sikkert hjælpe dig, selv om det kan komme til at se lidt rodet ud, men tvivlsomt at jeg kan det mens jeg er på arbejde - da jeg ikke har adgang til helt så mange midler.. ;-)
dvs. at istedet for følgende du skrev i spørgsmålet (øverst oppe): "hvis servernavn i textbox1 eksisterer i textbox 2 skal linie fra textbox1 kopires over til textbox3 " (Yes til overstående )
skal være "hvis servernavn i textbox1 _ikke_ eksisterer i textbox 2 skal linie fra textbox1 kopires over til textbox3 "
(overstående ikke korekt)
- hvis ikke exsisterer i begge / eller en af dem = nothing )
Det er faktisk lige meget om man checker textbox1 mod texkbox2 eller omvendt hvis navnet er representeret i begge = textbox1 line kopires over til textbox 3
ja ok, misforstod "trække dubletter ud" .. troede du mente at du ikke ville have dem med.. :-)
ok.. men siden jeg ikke kan hjælpe dig med at fikse noget sammen mens jeg er på arbejde - siden jeg ikke har nok kendtskab til arrays - bliver jeg nødt til at kigge på det, når jeg kommer hjem.. hvis du bare sender mig en email med al den information du kan sende, så ser jeg på det.. så får du et svar i løbet af aftenen.. :-)
For nu at give mit lille bidrag, så har jeg lavet et lille forslag i Access VBA (selv om det ser ud som om, du arbejder i VB.NET, så det vil nok kræve lidt omskrivning):
Private Sub Form_Open(Cancel As Integer) Textbox1 = "p44400A0001022;11.214.200.128;0017A4416D23:" & vbNewLine & "p4440fA0001024;11.214.200.128;0017A4416BD5:" & vbNewLine & "server23;11.214.200.128;0017A4416D29:"
Textbox2 = "p44400A0001022" & vbNewLine & "p4440fA0001023" & vbNewLine & "server23" End Sub
Private Sub cmdTestCopy_Click() Dim Lin1() As String Dim Lin2() As String Dim Ord1() As String Dim i1 As Integer Dim i2 As Integer
Me.Textbox3 = ""
Lin1 = Split(Me.Textbox1, vbNewLine) Lin2 = Split(Me.Textbox2, vbNewLine) For i1 = 0 To UBound(Lin1) Ord1 = Split(Lin1(i1), ";") For i2 = 0 To UBound(Lin2) If Ord1(0) = Lin2(i2) Then If Me.Textbox3 <> "" Then Me.Textbox3 = Me.Textbox3 & vbNewLine End If Me.Textbox3 = Me.Textbox3 & Lin1(i1) Exit For End If Next Next
Dim Lin1() As String Dim Lin2() As String Dim Ord1() As String Dim i1 As Integer Dim i2 As Integer
TextBox3.Text = ""
Lin1 = Split(TextBox1.Text, vbNewLine) Lin2 = Split(TextBox2.Text, vbNewLine) For i1 = 0 To UBound(Lin1) Ord1 = Split(Lin1(i1), ";") For i2 = 0 To UBound(Lin2) If Ord1(0) = Lin2(i2) Then If TextBox3.Text <> "" Then TextBox3.Text = TextBox3.Text & vbNewLine End If TextBox3.Text = TextBox3.Text & Lin1(i1) Exit For End If Next Next
Tusind tak for hjælpen ... så kan jeg komme videre med mit projekt ....
Nej, for jeg har ikke lagt et svar endnu. Det gør jeg nu... :-)
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.