PDA

View Full Version : load کردن فایل utf در لیست باکس



samiasoft
دوشنبه 17 شهریور 1393, 18:33 عصر
سلام دوستان

من در حالت عادی که فایل تکست بصورت ansi ذخیره شده باشه میتوانم ان را در لیست باکس نشون بدم

اما برای حروف فارسی که در داخل فایل تکست هستند و بصورت utf ذخیره شدند وقتی داخل لیست باکس لود میکنم درست نمایش داده نمیشن

ایا راه حلی دارید؟

این سورس رو ضمیمه شده رو ببنید.

vbhamed
سه شنبه 18 شهریور 1393, 06:56 صبح
سلام
اين يك نمونه براي يونيكد

samiasoft
سه شنبه 18 شهریور 1393, 09:40 صبح
آیا نمیشه برای ذخیره بصورت یونیکد یا utf8 از CommonDialog استفاده کرد؟

من هرچه تلاش کردم نشد محل ذخیره یا لود فایل رو با استفاده از CommonDialog انتخاب کنم:افسرده:

vbhamed
سه شنبه 18 شهریور 1393, 11:36 صبح
سلام
ذخيره به صورت Unicode كلا ارتباطي به Common Dialog نداره، كار اين دو تا متفاوته
نمونه كار با Common Dialog هم تو سايت هم تو كل اينترنت فراوونه

samiasoft
سه شنبه 18 شهریور 1393, 13:16 عصر
با استفاده از راهنمایی شما کد ذخیره و لود رو تونستم بصورت زیر بنویسم

Private Sub cmdSave_Click()
CommonDialog1.FileName = ""
CommonDialog1.Filter = "Text Files (.txt) |*.txt|"

Dim sCarCe As ADODB.Stream
CommonDialog1.ShowSave
Set sCarCe = New ADODB.Stream
If CommonDialog1.FileName <> "" Then

sCarCe.Open
sCarCe.Charset = "UTF-8"
sCarCe.WriteText Text1.Text

sCarCe.SaveToFile CommonDialog1.FileName, adSaveCreateOverWrite
Set sCarCe = Nothing
End If
End Sub

Private Sub cmdLoad_Click()
CommonDialog1.FileName = ""
CommonDialog1.Filter = "Text Files (.txt) |*.txt|"

Dim sCarCe As ADODB.Stream
CommonDialog1.ShowOpen
Set sCarCe = New ADODB.Stream


If CommonDialog1.FileName <> "" Then
sCarCe.Open
sCarCe.Charset = "UTF-8"
sCarCe.LoadFromFile CommonDialog1.FileName
Text1.Text = sCarCe.ReadText

Set sCarCe = Nothing
End If
End Sub



که این برای تکست باکس بود.
برای لیست باکس چطوری عمل کنم؟

vbhamed
سه شنبه 18 شهریور 1393, 16:29 عصر
سلام
رشته اي كه از فايل خونده شده رو با تابع Split و بر اساس كاراكتر vbCrLf به صورت آرايه در بياريد و عناصر آرايه رو در ليست بريزيد

samiasoft
سه شنبه 18 شهریور 1393, 18:03 عصر
متاسفانه بلد نیستم اینو انجام بدم:خجالت: یعنی اینگونه بنویسم؟

St() = Split(sCarCe.ReadText, vbCrLf)
For i = 0 To List1.ListCount - 1
List1.AddItem St(i)
Next i

hmbarnamenevis
جمعه 21 شهریور 1393, 15:34 عصر
St() = Split(sCarCe.ReadText, vbCrLf)
For i = LBound(St) To UBound(St)
List1.AddItem St(i)
Next i

samiasoft
شنبه 22 شهریور 1393, 01:26 صبح
ممنون از شما...کد لود کردن رو بصورت زیر نوشتم

CommonDialog1.FileName = ""
CommonDialog1.Filter = "Text Files (.txt) |*.txt|"
Dim St() As String
Dim sCarCe As ADODB.Stream
CommonDialog1.ShowOpen
Set sCarCe = New ADODB.Stream

List1.Clear

If CommonDialog1.FileName <> "" Then
sCarCe.Open
' type zakhire dade -- Unicode - Ansi - Unicode big endian - UTF-8
sCarCe.Charset = "UTF-8"
sCarCe.LoadFromFile CommonDialog1.FileName
m = sCarCe.ReadText

St() = Split(m, vbCrLf)
For i = LBound(St) To UBound(St)
List1.AddItem St(i)
Next i

Set sCarCe = Nothing
End If

اما برای ذخیره کردن چطوری عمل کنیم؟:متفکر:

vbhamed
شنبه 22 شهریور 1393, 09:07 صبح
سلام
براي ذخيره هم همه آيتمهاي ليست رو در يك رشته با هم تركيب كنيد و بين هر آيتم همون كاراكتر vbCrLf رو بزاريد و بعد كل رشته رو در فايل بنويسيد

samiasoft
شنبه 22 شهریور 1393, 18:03 عصر
For i = 0 To List1.ListCount - 1
sCarCe.WriteText List1.List(i) + vbCrLf
Next i

به نظرتون درسته؟

vbhamed
یک شنبه 23 شهریور 1393, 10:10 صبح
سلام
فايل خروجي رو تست كنيد ببينيد همه آيتم ها نوشته شده يا فقط آيتم آخر

tosi-software
پنج شنبه 23 اردیبهشت 1395, 09:45 صبح
سلام ، کسی الان آنلاین هست که یک نمونه فایل متنی را ارسال کنم تا نحوه خواندن اطلاعات UTF را راهنمائی کند؟
لازم به یاد آوری است که هیچیک از روشهای قید شده در بالا پاسخگو نبوده است .
ممنون میشوم اگر راهنمائی فرمائید.

vbhamed
پنج شنبه 23 اردیبهشت 1395, 15:56 عصر
سلام
روش بالا برای خواندن فایلهای استاندارد utf است اگر فایل شما به این روش خونده نمیشه یعنی استاندارد نیست و ممکنه کلا به طریق دیگری نوشته شده باشه یا اینکه به صورت کد شده ذخیره شده باشه
اما در هر صورت فایلتون رو ارسال کنید