PDA

View Full Version : ذخیره مقدار لیست باکس



vB.N3T
سه شنبه 15 دی 1388, 16:46 عصر
امید وارم این تاپیک حذف نشه

دوستان من یه برنامه ای دارم( اگه مدیران ناراحت هستند سورس رو بزارم ببینید) که چند تا کامند داره و لیست باکس وقتی روی کامند کلیک میکنی چند تا اسم میگیره لیست باکس حالا میخوام این اسم های که توی لیست باکس هست رو داخل یه فایل تکس ذخیره کنم این کد ها رو زدم
یه کامند دیالوگ اضافه کردم توش این کد ها رو زدم

dlg.filter ="text files (*.txt)"
dlg.showsave

تا اینجا پنجره سیو باز میشه و مشکلی نداره اما میمونه طریقه سیو کردن لیست باکس که متاسفانه من هر کدی رو تست میکن عرور میده ممنون میشم راهنماییم کنید

Felony
سه شنبه 15 دی 1388, 17:05 عصر
Open "D:\Test.txt" For Output As #1
For i = 0 To List1.ListCount
Print #1, List1.List(i)
Next i
Close #1

vB.N3T
سه شنبه 15 دی 1388, 20:32 عصر
سلام.

سیلور جان این کد خطا میده

این کد

Open "D:\Test.txt" For Output As #1
For i = 0 To List3.ListCount
Print #1, List3.List(i)
Next i
Close #1

حالا این Open "D:\Test.txt" For Output As #1 فکر کنم یه فایل تکس ایجاد میکنه تو درایو دی
تا اینجا درست

اما من یک کامند زدم که وقتی روش کلیک میکنیم طبق ادرسی که میدیم یه فایل تکس باید ایجاد کنه
مثلا میدیم دسکتاپ اونجا یه فایل تکس درست کنه بعد مقدار لیست باکس رو سیو کنه

این کدی هست که من زدم


Private Sub Command1_Click()
D1.Filter = "(file text (*.txt)"
D1.ShowSave
Open "D:\Test.txt" For Output As #1
For i = 0 To List3.ListCount
Print #1, List3.List(i)
Next i
Close #1


End Sub

ولی موقع اجرا به حلقه گیر میده ؟؟ نظرتون چیه

Felony
سه شنبه 15 دی 1388, 20:53 عصر
من VB رو سیستم ندارم ، D1 شما که CommonDialog هست یک متد با نام FileName یا ... داره که اون رو باید به عنوان آدرس فایل بدید به تکه کدی که من گزاشتم ، در ضمن به چیه حلقه گیر میده ؟

xxxxx_xxxxx
سه شنبه 15 دی 1388, 22:28 عصر
For i = 0 To List3.ListCount -1
Print #1, List3.List(i)
Next i

دلیلش رو که می دونید.

niko2008
سه شنبه 15 دی 1388, 22:44 عصر
عزیز ببین به دردت میخوره
امیدوارم شما هم به سوالی که من پرسیدم عنایت کنید

vB.N3T
چهارشنبه 16 دی 1388, 00:18 صبح
بچه ها من کد رو ادیت کردم اما باز اینطوری شده نگاه کنید

http://www.img98.com/images/3sedpg0jvcrdv3slmd9p.jpg

xxxxx_xxxxx
چهارشنبه 16 دی 1388, 00:45 صبح
در قسمت General (بالاترین بخش کدها) احتمالاً چنین چیزی نمی بینید؟


Option Explicit

این باعث میشه تا برنامه نویس اجازه استفاده از متغیرهایی که تعریف نشده اند رو نداشته باشه. یعنی حتماً باید متغیرها ابتدا تعریف بشن و بعد استفاده بشند.
اینجا هم متغیر i تعریف نشده و استفاده شده. پس یا قبل از استفاده از i (قبل از حلقه) متغیر i رو تعریف کنید و یا Option Explicit رو حذف کنید. که مورد اول پیشنهاد میشه.

vB.N3T
چهارشنبه 16 دی 1388, 02:12 صبح
دستتون درد نکنه خیلی اقایید دست همگی درد نکنه
اره داداش Option Explicit این کد تو قسمت General بود

فقط یه سوال دیگه طبق این کد Open "D:\Test.txt" For Output As #1
یه فایل txt تو درایو d درست میشه سیو میشه اونجا
من یه کامند دیالوگ گذاشتم که شو سیو رو بار میکنه


D1.Filter = "(file text (*.txt)"
D1.ShowSave

تا اینجا درست
خوب میشه با استفاده از این کادر شو محل تعین درست شدن فایل txt رو تعیین کرد مثلا صفحه دسکتاپ

butterfly8528
چهارشنبه 16 دی 1388, 03:16 صبح
خوب میشه با استفاده از این کادر شو محل تعین درست شدن فایل txt رو تعیین کرد مثلا صفحه دسکتاپ

اگه منظورت رو درست متوجه شده باشم شما میخوای یک مسیر پیشفرض رو برای ذخیره کردن نمایش بدی .



Private Sub Command1_Click()
Dim str1 As String
str1 = Environ("ALLUSERSPROFILE")
str1 = str1 & "\Desktop"
d1.InitDir = str1
d1.ShowSave
End Sub


موفق باشی .

xxxxx_xxxxx
چهارشنبه 16 دی 1388, 03:17 صبح
خوب میشه با استفاده از این کادر شو محل تعین درست شدن فایل txt رو تعیین کرد مثلا صفحه دسکتاپ
منظورتون اینه که وقتی پنجره Save باز میشه به طور پیشفرض آدرسش رو تغییر بدیم که اول کجا باشه؟

برای اینکار به اینصورت عمل کنید:


D1.InitDir = "C:\"
D1.ShowSave

با این کار مسیر پیشفرض پنجره Save روی \:C تنظیم میشه.
برای دسکتاپ اینطوری بنویسید:


D1.InitDir = Environ("UserProfile") & "\Desktop\"
D1.ShowSave

vB.N3T
چهارشنبه 16 دی 1388, 09:13 صبح
ممنون

درسته ببنید مثلا میخواییم یه فایل رو از اینترنت دانلود کنیم وقتی رو لینک دانلود کلیک میکنیم کادر سیو باز میشه میگه اینو میخوای کجا سیو کنی. مثلا ما میدیم درایو c انجا سیو میشه بعد یه لینک دیگه دانلود میکنیم میگیم این میخواییم تو دسکتاپ باشه . منظورم اینه که کادر سیو باز شد ما هر مسیری دادیم همون جا فایل سیو بشه

vB.N3T
چهارشنبه 16 دی 1388, 11:57 صبح
دوستان من این کد رو تو یه project جدید زدم یه کامند گذاشتم و یک کامند دیالوگ صحیح کار کرد


With CommonDialog1
.DialogTitle = "Save Client Log:"
.Filter = "Text File (*.txt)|*.txt|All Files (*.*)|*.*|"
.ShowSave
Dim Nbr As Long
On Error Resume Next
Open .FileName For Output As #1
For Nbr = 0 To List1.ListCount - 1
Print #1, List1.List(Nbr)
Next Nbr
Close #1
End With

اما تو برنامه خودم میزنم اصلا کار نمیکنه؟؟؟ میتونه دلیل خاصی داشته باشه . شاید یه کد باشه که نذاره این کار کنه ؟؟ میشه همچین چیزی

Dr.Bronx
چهارشنبه 16 دی 1388, 18:28 عصر
on error resume next رو بردارید اونوقت متن خطای احتمالی رو ببینید.

در صورتی که قادر نبودید خطا رو رفع کنید متن خطا رو به طور کامل اینجا بنویسید تا دوستان کمک کنند.

موفق باشید ./

vB.N3T
چهارشنبه 16 دی 1388, 18:46 عصر
نه عرور نمیده

فقط فایل تکس نمیسازه

Felony
پنج شنبه 17 دی 1388, 16:11 عصر
من این کد رو که گزاشتی تست کردم ، درست کار میکنه .


With CommonDialog1
.DialogTitle = "Save Client Log:"
.Filter = "Text File (*.txt)|*.txt|All Files (*.*)|*.*|"
.ShowSave
Dim Nbr As Long
On Error Resume Next
Open .FileName For Output As #1
For Nbr = 0 To List1.ListCount - 1
Print #1, List1.List(Nbr)
Next Nbr
Close #1
End With

xxxxx_xxxxx
پنج شنبه 17 دی 1388, 16:18 عصر
برنامه رو خط به خط اجرا کنید ببینید مشکل کجاست. یا اول همین دستورات BreakPoint بزارین ببینید اصلاً به اینجا میرسه!


من این کد رو که گزاشتی تست کردم ، درست کار میکنه .

دوستان من این کد رو تو یه project جدید زدم یه کامند گذاشتم و یک کامند دیالوگ صحیح کار کرد

vB.N3T
جمعه 18 دی 1388, 00:14 صبح
دوستان ردیف شد از همه تشکر میکنم


کد صحیح بود فقط من باید


With CommonDialog1

رو تغیر میدادم به
With dial1

که فراموش میکردم

خیلی حیلی ممنون :قلب:

vB.N3T
یک شنبه 20 دی 1388, 18:08 عصر
دوستان یه مشکل دارم باز؟؟؟؟
لیست باکس بیشتر از 20 تا اسم نمیگیره و بیشتر از 20 تا اسم سیو نمیکنه مشکل کجاست