Hej allihopa, Mitt problen är att jag har 4 textboxar som jag sparar i en txt fil, inget märkvärdigt. Men jag sparar all info som kommer i dom 4 txt boxarna i skickat.txt, och dom lägger sig eftervarandra. Nu undrar jag om jag tar fram dom 4 första posterna och vill se på nästkommande 4 påster och så vidare, hur löser jag det?? Det blir som en bläddring i en txt fil. Hoppas ni fattat vad jag menar, kan man få det att både gå fram och tillbaka??. fast jag är nöjd om man bara kan bläddra på ett håll. Om du sparar fil som random-acces-fil använd funktion Seek. 'Hej Jocke Testa denna om det är det du menar !!! Det ser ju låvande ut, skall ta och testa och se hur det funkar. Nu är jag hemma och pular lite. Kan någon titta på skriptet lite, Jag begriper mig inte på det. kommer upp en liten skylt med texten. 'Hej Jocke Jag tackar dig för att du ville hjälpa mig, men det löste sig innan du skrev den nya koden. SKIT BAKOM KNAPPARN. Jag är inte så bra på detta med programering, men jag försöker lära mig. Men ett annat problem jag märkte var att i den sista txtboxen så kan det hamna i den situationen att man använder return för att få en ny rad, och då fungerade inte bläddringen alls. Det kom upp en dialogruta om error.Bläddra i en txt fil
Mvh JockeSv: Bläddra i en txt fil
<code>
Seek #1, 3 'filpekaren pekar på tredje post.
</code>
Om du sparar fil med FileSystemObject då kan du försöka med:
<code>
Private Sub Command1_Click()
Dim f, fs
Dim strTemp As String, strResultat As String
Dim i As Integer
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("skickat.txt", 1, 0)
i = 0
Do Until f.AtEndOfStream = True
i = i + 1
strTemp = f.readline
If i = 3 Then ' om du söker post nr 3
strResultat = strTemp
Exit Do
End If
Loop
f.Close
Set fs = Nothing
End Sub
</code>
/IbbeSv: Bläddra i en txt fil
'Skapa en nytt projekt lägg till följande 4st textboxar
'2st Commandbutton sedan lägg till denna kod i form1.
Du kan söka framåt och bakåt i filen !!!
'\\Masen
Option Explicit
Private rgsData() As String
Private lNext As Long
Private Sub Form_Load()
Dim sFile As String
Dim lFileNo As Long
Dim sRad As String
Dim lAntal As Long
Dim rgsLine() As String
'*****************************************************
'Du kan ta bort denna kod för din form sedan *
'*****************************************************
Form1.Width = 5100: Form1.Height = 2010 '*
Text1.Left = 0: Text2.Left = 1260 '*
Text3.Left = 2520: Text4.Left = 3780 '*
Command1.Height = 375: Command2.Height = 375 '*
Command1.Left = 2520: Command2.Left = 1260 '*
Command1.Top = 960: Command2.Top = 960 '*
Command1.Caption = ">>": Command2.Caption = "<<" '*
Command1.FontSize = 12: Command2.FontSize = 12 '*
Command1.FontBold = True: Command2.FontBold = True '*
Text1.Top = 300: Text2.Top = 300 '*
Text3.Top = 300: Text4.Top = 300 '*
'*****************************************************
ReDim rgsData(0 To 4, 1)
'****************************************************
sFile = "C:\skickat.txt" 'Här byt till din fil !
'****************************************************
lFileNo = FreeFile
Open sFile For Input As #lFileNo
While Not EOF(lFileNo)
Line Input #lFileNo, sRad 'Här läser den hela raden
lAntal = lAntal + 1
ReDim Preserve rgsData(0 To 4, lAntal)
rgsLine() = Split(sRad, vbTab) 'Här splittar jag om det är Tab mellan texten
'Det beror vad du sätter mellan dina poster i textfilen
'Om det är semicolon så byt ut vbTab till ";"
rgsData(0, lAntal) = lAntal 'Ett ID i arrayen
rgsData(1, lAntal) = rgsLine(0) 'Text1.text
rgsData(2, lAntal) = rgsLine(1) 'Text2.text
rgsData(3, lAntal) = rgsLine(2) 'Text3.text
rgsData(4, lAntal) = rgsLine(3) 'Text4.text
Wend
Close #lFileNo 'Stänger filen
Me.Text1.Text = rgsData(1, 1)
Me.Text2.Text = rgsData(2, 1)
Me.Text3.Text = rgsData(3, 1)
Me.Text4.Text = rgsData(4, 1)
lNext = 1
End Sub
Private Sub Command1_Click()
If lNext < UBound(rgsData, 2) Then
lNext = lNext + 1
Text1.Text = rgsData(1, lNext)
Text2.Text = rgsData(2, lNext)
Text3.Text = rgsData(3, lNext)
Text4.Text = rgsData(4, lNext)
End If
End Sub
Private Sub Command2_Click()
If lNext > LBound(rgsData, 2) + 1 Then
lNext = lNext - 1
Text1.Text = rgsData(1, lNext)
Text2.Text = rgsData(2, lNext)
Text3.Text = rgsData(3, lNext)
Text4.Text = rgsData(4, lNext)
End If
End SubSv: Bläddra i en txt fil
tackar........................Många timmar senare,, Nu har jag pulat lite med koderna, + att jag har sovit och tängt igenom det hela och det fungerade som jag hade tängt.Nu sitter jag på jobbet så jag får vänta tills jag kommer hem med att fortsätta. många tack skall du ha Masen
mvh JockeSv: Bläddra i en txt fil
Run-Time error ´9´:
Subscript out of range
och sedan markeras raden som följer
rgsData(2, lAntal) = rgsLine(1) 'Text2.text
Vad är det för fel?? Har bytt med både vbtab och semicolon och lite allt möjligt men det vills sig inte.
tack på förhand // JockeSv: Bläddra i en txt fil
'Det är för att du har en tom rad i slutet av textfilen om du
'lägger till if sRad <> "" then efter Line Input #lFileNo, sRad
'sedan innan wend så lägger du till End If
'Annars prova denna kod då jag har lagt till detta !!
'Mvh Masen
<code>
Option Explicit
Private rgsData() As String
Private lNext As Long
Private Sub Form_Load()
Dim sFile As String
Dim lFileNo As Long
Dim sRad As String
Dim lAntal As Long
Dim rgsLine() As String
'*****************************************************
'Du kan ta bort denna kod för din form sedan *
'*****************************************************
Form1.Width = 5100: Form1.Height = 2010 '*
Text1.Left = 0: Text2.Left = 1260 '*
Text3.Left = 2520: Text4.Left = 3780 '*
Command1.Height = 375: Command2.Height = 375 '*
Command1.Left = 2520: Command2.Left = 1260 '*
Command1.Top = 960: Command2.Top = 960 '*
Command1.Caption = ">>": Command2.Caption = "<<" '*
Command1.FontSize = 12: Command2.FontSize = 12 '*
Command1.FontBold = True: Command2.FontBold = True '*
Text1.Top = 300: Text2.Top = 300 '*
Text3.Top = 300: Text4.Top = 300 '*
'*****************************************************
ReDim rgsData(0 To 4, 1)
'****************************************************
sFile = "C:\skickat.txt" 'Här byt till din fil !
'****************************************************
lFileNo = FreeFile
Open sFile For Input As #lFileNo
While Not EOF(lFileNo)
Line Input #lFileNo, sRad 'Här läser den hela raden i textfilen
If sRad <> "" Then
lAntal = lAntal + 1
ReDim Preserve rgsData(0 To 4, lAntal)
rgsLine() = Split(sRad, vbTab) 'Här splittar jag om det är Tab mellan texten
'Det beror vad du sätter mellan dina poster i textfilen
'Om det är semicolon så byt ut vbTab till ";"
rgsData(0, lAntal) = lAntal 'Ett ID i arrayen
rgsData(1, lAntal) = rgsLine(0) 'Text1.text
rgsData(2, lAntal) = rgsLine(1) 'Text2.text
rgsData(3, lAntal) = rgsLine(2) 'Text3.text
rgsData(4, lAntal) = rgsLine(3) 'Text4.text
End If
Wend
Close #lFileNo 'Stänger filen
Me.Text1.Text = rgsData(1, 1)
Me.Text2.Text = rgsData(2, 1)
Me.Text3.Text = rgsData(3, 1)
Me.Text4.Text = rgsData(4, 1)
lNext = 1
End Sub
Private Sub Command1_Click()
If lNext < UBound(rgsData, 2) Then
lNext = lNext + 1
Text1.Text = rgsData(1, lNext)
Text2.Text = rgsData(2, lNext)
Text3.Text = rgsData(3, lNext)
Text4.Text = rgsData(4, lNext)
End If
End Sub
Private Sub Command2_Click()
If lNext > LBound(rgsData, 2) + 1 Then
lNext = lNext - 1
Text1.Text = rgsData(1, lNext)
Text2.Text = rgsData(2, lNext)
Text3.Text = rgsData(3, lNext)
Text4.Text = rgsData(4, lNext)
End If
End Sub
</code>Sv: Bläddra i en txt fil
Finns det något bot mot detta?? När programmet är färdigt skall det bli ett mailprogram som man kan bläddra i skickade mail, och i den sista rutan skriver man meddelandet till personen. så du förstår varför man använder return då. // Jocke
PS har inte provat den nya koden.DS