PDA

View Full Version : ثبت در حافظه برنامه



ostadonline
سه شنبه 30 بهمن 1386, 19:55 عصر
با سلام به همه. من یک مبتدی در امر برنامه نویسی هستم. یک برنامه نوشته ام که برای نمایش عکس ها است و در این برنامه آدرس آخرین عکس انتخابی توسط کاربر، به ترتیب از اول به آخر ، در یک لیست باکس نشان داده میشود. مشکل اینجا است که با بستن برنامه و اجرای مجدد آن محتوای لیست باکس خالی میشود و همه چیز از اول ... . حالا میخواستم بپرسم برای این که یک آدرس در لیست باکس برای مرجعات بعدی نیز ذخیره شود، یعنی با اجرای مجدد برنامه لیست آخرین عکسهای انتخاب شده نمایش داده شود، چه کدی باید به کار برد؟
مرسی...

ƒxmahdi
سه شنبه 30 بهمن 1386, 20:23 عصر
از کد زیر در رویداد های Form_Load و Form_unLoad استفاده کنید
این کد اطلاعات را در یک فایل متنی در مسیر برنامه ذخیره می کند توجه کنید در زمان برنامه نویسی حتما برنامه را با دستور End یا دکمه close خود فرم ببندید چون در صورت بستن برنامه با برنامه نویسی رویداد Form_unLoad فراخانی نمی شود و تغییرات ذخیره نمی شود یا می توانید در هنگام اضافه آدرس جدید در لیست عمل ذخیره انجام شود که خیلی بهتره


Private Sub Form_Load()
If Dir(App.Path & "\information.txt") = "information.txt" Then
Open App.Path & "\information.txt" For Input As #1
Else
Open App.Path & "\information.txt" For Output As #1
Close #1
Exit Sub
End If
Do While Not EOF(1)
Line Input #1, val1
List1.AddItem val1
Loop
Close #1
End Sub
______________________________

Private Sub Form_Unload(Cancel As Integer)
Open App.Path & "\information.txt" For Output As #2
For i = 0 To List1.ListCount - 1
val2 = List1.List(i)
Print #2, val2
Next i
Close #2
End Sub

soheil_programmer
سه شنبه 30 بهمن 1386, 20:27 عصر
با سلام به همه. من یک مبتدی در امر برنامه نویسی هستم. یک برنامه نوشته ام که برای نمایش عکس ها است و در این برنامه آدرس آخرین عکس انتخابی توسط کاربر، به ترتیب از اول به آخر ، در یک لیست باکس نشان داده میشود. مشکل اینجا است که با بستن برنامه و اجرای مجدد آن محتوای لیست باکس خالی میشود و همه چیز از اول ... . حالا میخواستم بپرسم برای این که یک آدرس در لیست باکس برای مرجعات بعدی نیز ذخیره شود، یعنی با اجرای مجدد برنامه لیست آخرین عکسهای انتخاب شده نمایش داده شود، چه کدی باید به کار برد؟
مرسی...

برای ذخیره موردی در رجیستری ویندوز:

retVal=GetSetting(appname:="Project1", section:="ListBox1", Key:="Item", Default:="")
و برای بازخوانی مجدد آن:

SaveSetting "Project1", "ListBox1", "Item", saveVal

ostadonline
چهارشنبه 01 اسفند 1386, 12:23 عصر
سلام. خیلی متشکرم که زود جوابم رو دادید.
استاد ƒxmahdi عزیز برنامه هنگام اجرای Line Input #1, val1 ارور میدهد. میشه درباره val1 و کلا کدی که معرفی کردید، در سطح پایین یک توضیحی هم بدید؟ متشکرم.
soheil_programmer جان راه حل شما هم خیلی برام جالب بود. اما من نمیدونم تو کدوم کلید رجیستری قرار بدهم که مشکلی پیش نیاید. میشه در این زمینه راهنمایی بفرمایید؟
باز هم ممنون...

ƒxmahdi
چهارشنبه 01 اسفند 1386, 12:57 عصر
برنامه هنگام اجرای Line Input #1, val1 ارور میدهد.
من امتحان کردم Error نداد شما val1 را تعیرف کنید برنامه را هم آپود کردم ببینید
برای اینکه بهتر متوجه بشین من خطوط برنامه را شماره گذاری می کنم و توضیح می دم
ابتدا هنگام لود شدن فرم:


1- If Dir(App.Path & "\information.txt") = "information.txt" Then
2- Open App.Path & "\information.txt" For Input As #1
3- Else
4- Open App.Path & "\information.txt" For Output As #1
5- Close #1
6- Exit Sub
7- End If
8- Do While Not EOF(1)
9- Line Input #1, val1
10- List1.AddItem val1
11- Loop
12- Close #1
در خط 1 در صورتی که فایل وجود نداشته باشد آن را می سازد در خط 4 در صورتی که فایل وجود داشت فایل را برای خواندن باز می کند در خط 8 با دستور Do while از اول تا آخر فایل چک می شود و در لیست اضلفه می شود و در خط 12 هم که فایل بسته می شود
حال هنگام خروج از برنامه



1- Open App.Path & "\information.txt" For Output As #2
2- For i = 0 To List1.ListCount - 1
3- val2 = List1.List(i)
4- Print #2, val2
5- Next i
6- Close #2


در خط 1 فایل مسیر برنامه را پاک می کند در خط 2 تعداد کل لیست به حلقه for داده می شود در خط 3 مقدار لیست در val2 ذخیره می شود و در خط 4 در فایل ذخیره می شود

موفق باشید

ostadonline
پنج شنبه 02 اسفند 1386, 19:26 عصر
سلام. به برنامه تون نگاه کردم و حتی val1 رو هم تعریف کردم. اما همچنان هنگام اجرای برنامه ارور زیر را میدهد:
Compile Error
Variable Not Found
به نظر شما مشکل از کجاست؟

ƒxmahdi
پنج شنبه 02 اسفند 1386, 20:29 عصر
اول بفرمایید برنامه من هم همین error را می ده
دوم نام val1 را تغییر دهید در صورتی که شیعی در برنامه شما به این اسم باشه همین پیام را میده اگه بازم درست نشد برنامه را برام بفرست تا درستش کنم در غیر این صورت من نمی تونم بفهمم که چی مشکلی داره؟

ostadonline
شنبه 04 اسفند 1386, 17:00 عصر
سلام.


اول بفرمایید برنامه من هم همین error را می ده?

خیر. برنامه شما اصلا Error نمیده.


دوم نام val1 را تغییر دهید در صورتی که شیعی در برنامه شما به این اسم باشه همین پیام را میده اگه بازم درست نشد برنامه را برام بفرست تا درستش کنم در غیر این صورت من نمی تونم بفهمم که چی مشکلی داره؟

با عوض کردن نام val1 هم مساله حل نشد. برنامه رو آپ میکنم. ممنون میشم چکش کنید.
باز هم مرسی...

ƒxmahdi
شنبه 04 اسفند 1386, 18:26 عصر
مشکل برنامه شما حل شد فقط می بایست متغیر ها راتعریف کنید و نام لیست را هم متناسب با برنامه تغییر دهید من برای اینکه حجم برنامه کم بشه 2 فایل exe و عکس ها را در مسیر برنامه پاک کردم که خودتون خواستید اضافه کنید .
موفق باشید ƒxmahdi

ostadonline
شنبه 04 اسفند 1386, 20:24 عصر
سلام. واقعا از لطفتون ممنونم. مشکلم حل شد. خودم اصلا به فکر تغییر نام لیست در کد نبودم. شرمنده که مزاحم وقتتون هم شدم.
باز هم ممنون...