Litet problem på kvällskvisten.. Om jag förstår problemet rätt vill du gruppera på tecken och ha mellanslag mellan varje grupp.. Tack Fredrik ! Men hur är det du vill få fram resultatet!? Hakade på Fredriks lösning och då blev det så här Hej Niklas ! Hej och tack Sven-Åke ! Du har då ett Access RecordSet eller DataKontroll tex Du har då ett Access RecordSet eller DataKontroll tex läs in alla i en ListBox Tack ! Men..det har jag inte... Då får du vissa ett kort exempel på hur det ser ut i textfilen. Hej igen ! 1122334555EEE har ju inte samma struktur som ditt förra exempel "AA22CDDD555" Ursäkta !! *S* Då kan det bli så här Tackar och bugar ! Det funkar här hos mig. Tack för mkt god hjälp !Formatering av Strängvärde..
Vill formatera ett strängvärde hämtat från en variabel Ex : AA22CDDD555
Vill lagra det i en ny variabel med följande formatering AA 22 C DDD 555
(Obs ! Det gäller flera poster !)
Något bra förslag ?Sv: Formatering av Strängvärde..
Ett exempel som gör detta (finns säkert bättre sätt):
<code>
Private Function GroupString(ByVal sString As String) As String
Dim sCurChar As String
Dim sOut As String
Dim i As Long
sCurChar = Left(sString, 1)
For i = 0 To Len(sString)
If sCurChar = Mid(sString, i + 1, 1) Then
sOut = sOut & Mid(sString, i + 1, 1)
Else
sOut = sOut & " " & Mid(sString, i + 1, 1)
End If
sCurChar = Mid(sString, i + 1, 1)
Next
GroupString = sOut
End Function
</code>
Exempel:
<code>
Private Sub Command1_Click()
MsgBox GroupString("AA22CDDD555")
End Sub
</code>
..ger en msbbox med texten "AA 22 C DDD 555"Sv: Formatering av Strängvärde..
Har provat detta och det funkar...
Fast när jag blandar tecknen såhär : A62KCDDD555
Blir resultatet : A 6 2 K C DDD 555
Fler förslag ?
Sen vill jag hämta värdet AA22CDDD555(bara ett exempel) från tex Field1
Sv: Formatering av Strängvärde..
Är det grupperat efter ett visst antal tecken?Sv: Formatering av Strängvärde..
<code>
Option Explicit
Private Sub Command1_Click()
MsgBox GroupString("AA22CDDD555")
End Sub
Private Function GroupString(ByVal sString As String) As String
Dim ord(4) As String
Dim sOut As String
Dim i As Long
ord(0) = Left$(sString, 2) & " "
ord(1) = Mid$(sString, 3, 2) & " "
ord(2) = Mid$(sString, 5, 1) & " "
ord(3) = Mid$(sString, 6, 3) & " "
ord(4) = Right$(sString, 3)
For i = 0 To 4
sOut = sOut & ord(i)
Next 'i
GroupString = sOut
End Function
</code>Sv: Formatering av Strängvärde..
Svaret ska alltid vara grupperat enligt följande : 2D 00 C 24K L56
Fast tecknen i exemplett är inte relevanta,kan komma vilka tecken som helst. (alfanumeriskt)
//JanneSv: Formatering av Strängvärde..
Det fungerade perfekt !
Fråga 2
Vill hämta värdet från en variabel (tex Field1) !
Tack på förhand !
//JanneSv: Formatering av Strängvärde..
Data1.RekordSet.MoveFirst
MsgBox GroupString(Data1.RecordSet(1)) ' Fält1:s första rad det finns även Fält 0
Sedan blir det Data1.RekordSet.MoveNext och läs in.Sv: Formatering av Strängvärde..
Data1.RekordSet.MoveFirst
'List1.AddItem GroupString(Data1.RecordSet("Fältets Namn")) eller nummer 0- ....
List1.AddItem GroupString(Data1.RecordSet(1)) ' Fält1:s första rad det finns även Fält 0
Sedan blir det Data1.RekordSet.MoveNext och läs in.
List1.AddItem GroupString(Data1.RecordSet(1)) osv. osv.Sv: Formatering av Strängvärde..
Variabeln heter Field1 osv..
Hämtar texten, innehållet från en textfil..
??Sv: Formatering av Strängvärde..
Sen är mitt förslag att du läser in från denna och sedan rättar till det som du vill
och läser tillbaka den korrigerade strängen till den nya/konverterade textfilen.Sv: Formatering av Strängvärde..
Tack !
Förslaget är det jag har filat på ! Börjar dock bli lite rörigt.
Fast det fungerar nu..
Private Sub Command9_Click()
' Denna används när man behöver förändra positionerna i "fältet"
Dim ArtNr As String * 20 ' Artikelnummer
Dim Benamn As String * 25 ' Benämning
Open Text23.Text For Input As #1 ' Hämta filen via Commondialog
Open Text24.Text For Output As #2 ' Spara filen via Commondialog
Do While Not EOF(1)
Line Input #1, Buffer
Field1 = Mid(Buffer, 11, 11)
Field2 = Mid(Buffer, 31, 25)
Loop
MsgBox Field1 ' Endast för test
MsgBox Field2 ' Endast för test
ArtNr = GroupString(Field1)
Benamn = Field2
Text1.Text = ArtNr & Benamn ' Endast för test
Print #2, ArtNr & Benamn
Close #1
Close #2
End Sub
Exempel på textfilen :
11223444EEE Num Sv E46 00005000
Det är bara första delen som behöver ändras ! (1122334555EEE)
Vilket har lyckats bra med föregående exempel.
//JanneSv: Formatering av Strängvärde..
Vilken struktur gäller för "1122334555EEE" ?Sv: Formatering av Strängvärde..
Strukturen är densamma AA22CDDD555 Eller 11223444555Sv: Formatering av Strängvärde..
<code>
Option Explicit
Private Sub Command9_Click()
'Denna används när man behöver förändra positionerna i "fältet"
Dim buffer As String
Dim Field1 As String 'Du kan ta bort dessa om dom finns globalt
Dim Field2 As String
Dim Fnum1 As Long
Dim Fnum2 As Long
Fnum1 = FreeFile
Open Text23.Text For Input As #Fnum1 ' Hämta filen via Commondialog
Fnum2 = FreeFile
Open Text24.Text For Output As #Fnum2 ' Spara filen via Commondialog
Do Until EOF(Fnum1)
Line Input #Fnum1, buffer
Field1 = Left$(buffer, 11)
Field2 = Right$(buffer, Len(buffer) - 11)
Field1 = GroupString(Field1)
Print #Fnum2, Field1 & Field2
Loop
Close #Fnum1
Close #Fnum2
End Sub
Private Function GroupString(ByVal sString As String) As String
Dim ord(4) As String
Dim sOut As String
Dim i As Long
ord(0) = Left$(sString, 2) & " "
ord(1) = Mid$(sString, 3, 2) & " "
ord(2) = Mid$(sString, 5, 1) & " "
ord(3) = Mid$(sString, 6, 3) & " "
ord(4) = Right$(sString, 3)
For i = 0 To 4
sOut = sOut & ord(i)
Next 'i
'11 22 3 444 555
GroupString = sOut
End Function
</code>Sv: Formatering av Strängvärde..
Fast just nu funkar inte GroupString med ovanstånde.
Ska kolla igenom och testa..
//JanneSv: Formatering av Strängvärde..
Ta en MsgBoxkoll på vad du egentligen skickar,har det smygit sig in ett mellanslag.Sv: Formatering av Strängvärde..
Använde en del av det senaste och problemet var löst !
Ha det gott !
Mvh Janne