PDA

View Full Version : مبتدی: انتقال یک خط از richtextbox به درون یک رشته



earse+erse
دوشنبه 22 شهریور 1389, 15:04 عصر
خیلی مبتدیه
من میخوام محتویات یک خط مشخص (مثلا خط/سطر ۲) از درون یک richtextbox به درون یک رشته وارد بشه
جون خودم یادم رفته هرچی کتابا رو بالا پایین کردم چیزی پیدا نکردم این جستجوگر سایت هم انگار یه چیزیش میشه:خجالت:

Saman_12
دوشنبه 22 شهریور 1389, 15:59 عصر
MsgBox(Split(RtCh.Text, vbCrLf)(1))

Babak.Hassanpour
دوشنبه 22 شهریور 1389, 16:21 عصر
Private Function GetSpecificLine(filename As String, ByRef LineNumber As Long, Optional BufferSize As Long = &H10000) As String
Dim FF As Integer, Buf() As Byte, LnCt As Long, Pos As Long, i As Long, SLn As Long, ELn As Long

If BufferSize < 1 Then Exit Function
ReDim Buf(BufferSize - 1)
LnCt = 1
Pos = 1
LineNumber = Abs(LineNumber) - 1
If LineNumber < 1 Then SLn = 1

On Error GoTo EH
FF = FreeFile
Open filename For Binary As #FF
For Pos = 1 To LOF(FF) Step BufferSize
Get #FF, Pos, Buf
For i = 0 To BufferSize - 1
If Buf(i) = 13 Then
LnCt = LnCt + 1
If LnCt > LineNumber Then
If SLn Then
ELn = Pos + i - 1
Exit For
Else
SLn = Pos + i + 2
End If
End If
End If
Next i
If i <> BufferSize Then Exit For
Next Pos
If SLn Then
LineNumber = SLn
If ELn = 0 Then ELn = LOF(FF)
ReDim Buf(ELn - SLn)
Get #FF, SLn, Buf
GetSpecificLine = StrConv(Buf, vbUnicode)
End If
Close #FF
Exit Function
EH:

End Function


Private Sub Form_Load()
MsgBox GetSpecificLine("c:\asd.txt", 10)
End Sub
این مستقیم از فایل می خونه.از ریچ تکست باکس هم تا شب براتون میزارم.الان سرم شلوغه.

Saman_12
دوشنبه 22 شهریور 1389, 16:39 عصر
Private Function GetSpecificLine(filename As String, ByRef LineNumber As Long, Optional BufferSize As Long = &H10000) As String
Dim FF As Integer, Buf() As Byte, LnCt As Long, Pos As Long, i As Long, SLn As Long, ELn As Long

If BufferSize < 1 Then Exit Function
ReDim Buf(BufferSize - 1)
LnCt = 1
Pos = 1
LineNumber = Abs(LineNumber) - 1
If LineNumber < 1 Then SLn = 1

On Error GoTo EH
FF = FreeFile
Open filename For Binary As #FF
For Pos = 1 To LOF(FF) Step BufferSize
Get #FF, Pos, Buf
For i = 0 To BufferSize - 1
If Buf(i) = 13 Then
LnCt = LnCt + 1
If LnCt > LineNumber Then
If SLn Then
ELn = Pos + i - 1
Exit For
Else
SLn = Pos + i + 2
End If
End If
End If
Next i
If i <> BufferSize Then Exit For
Next Pos
If SLn Then
LineNumber = SLn
If ELn = 0 Then ELn = LOF(FF)
ReDim Buf(ELn - SLn)
Get #FF, SLn, Buf
GetSpecificLine = StrConv(Buf, vbUnicode)
End If
Close #FF
Exit Function
EH:

End Function


Private Sub Form_Load()
MsgBox GetSpecificLine("c:\asd.txt", 10)
End Sub
این مستقیم از فایل می خونه.از ریچ تکست باکس هم تا شب براتون میزارم.الان سرم شلوغه.



دوست عزیز اینی که گذاشتین برای یک تایپیک دیگه هست.(یعنی این کد جواب سوال هم این بنده خدا توی یک تایپیک دیگه هست)

Babak.Hassanpour
دوشنبه 22 شهریور 1389, 22:29 عصر
شرمنده.چون ایشون با پیام خصوصی درخواست پاسخ کردند و چون سه تا سوال مطرح کرده بودند احتمالا اون لحظه دچار اشتباه شدم.

rabenhod55
دوشنبه 22 شهریور 1389, 22:43 عصر
MsgBox(Split(RtCh.Text, vbCrLf)(1))

ببخشید حالا اکر بخواهیم اخرین رشته رو بدست بیاریم باید چکار کنیم (اخرین خط ) ؟

Saman_12
دوشنبه 22 شهریور 1389, 23:34 عصر
ببخشید حالا اگر بخواهیم اخرین رشته رو بدست بیاریم باید چکار کنیم (اخرین خط ) ؟
کاری نداره :

MsgBox Split(RtCh.Text, vbCrLf)(Len(RtCh.Text) - 1)

earse+erse
سه شنبه 23 شهریور 1389, 18:55 عصر
کاری نداره :

MsgBox Split(RtCh.Text, vbCrLf)(Len(RtCh.Text) - 1)
دستتون درد نکنه ولی این کد مشکل داره:

run-time error '9':
SubScript out of range

parselearn
سه شنبه 23 شهریور 1389, 19:04 عصر
کاری نداره :

MsgBox Split(RtCh.Text, vbCrLf)(Len(RtCh.Text) - 1)

شما بايد انديس مقدار آخر آرايه را بدست آوريد


MsgBox Split(RtCh.Text, vbCrLf)(UBound(Split(RtCh.Text, vbCrLf)))