نمایش نتایج 1 تا 20 از 20

نام تاپیک: ذخیره تنظیمات بعد از بستن برنامه

  1. #1

    Question ذخیره تنظیمات بعد از بستن برنامه

    با سلام
    قبلا راجع به این صحبت شده و تایپکم ایجاد شده .
    سوال من اینه که چرا من بعد از بستن برنامه که تنظیماتو میگم تو فایل ini ذخیره کنه برنامم هنگ میکنه از کد های توابع api به نامهای GetPrivateProfileString و WritePrivateProfileString استفاده میکنم.لیبل و shap هستن که left,top رو ذخیره باید بکنه که هنگ میکنه بعد از دستور ذخیره.
    لطفا راهنمایی بفرمایید.
    آخرین ویرایش به وسیله vbhamed : سه شنبه 13 مهر 1395 در 10:17 صبح

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اصفهان
    پست
    717

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    می تونی اون برنامه ات را بگذاری تا ببینم مشکلت چیه یا نه


    تا برات حلش کنم

  3. #3

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    سلام
    سورس کد مشکل را هم ضمیمه کنید

    پست زیر را هم بررسی کنید:گزینه ذخیره در برنامه

    موفق باشید
    .: مداحی دلنشین شهیدی که در زادروز ولادتش پرکشید [ تصاویر... ]
    .: مداحی دلنشین شهید غلامعلی رجبی [ تصاویر... ]

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

  4. #4

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    با سلام
    این مورد که میگم یک حدس و احتمال است یعنی ممکن است که برنامه شما حتی تا لحظه ای که می خواهد کار ذخیره کردن تنظیمات را انجام دهد همچنان از اطلاعات این فایل استفاده می کند و یا اینکه ممکن است برنامه زمان کافی برای ذخیره تنظیمات را نداشته باشد که در این صورت باید توسط یک تایمر چند ثانیه بعد از دادن دستور ذخیره تنظیمات از برنامه خارج شوید
    البته من چندان در مورد چنین روشی برای ذخیره تنظیمات برنامه نمی دانم و پیشنهاد می کنم که در صورت عدم رفع شدن مشکل ، تنظیمات برنامه را در صورت زیاد نبودن تعداد آن در چند فایل تکست به طور جداگانه ذخیره کنید.
    به هر حال امیدوارم که موفق شوید.

  5. #5

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    سلام

    کاربر گرامی nerset

    دستورات ویژوال بیسیک به صورت پیش فرض در یک Thread انجام میشه پس وقتی دستور ذخیره دیتا رو دادید تا زمانی که کار اون دستور انجام نشده سراغ دستور بعدی نمیره بنابراین گذاشتن تایمر در این مورد مشکلی رو حل نمیکنه
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  6. #6

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    سلام و مرسی
    من از تایمر استفاده نکردم!!!!واسه ذخیره از دستور WritePrivateProfileString استفاده میکنم مثلا: WritePrivateProfileString label1.top و WritePrivateProfileString shape1.top و WritePrivateProfileString label1.left و..... وقتی این دستوراتو مینویسم هنگ میکنه

  7. #7

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    با سلام
    من در برخی از نرم افزارهایی که نوشته ام فقط از یک فایل اجرایی استفاده نکرده ام و همچنین فایل های اجرایی نوشته شده در آنها همزمان با هم اجرا می شوند و در عین حال به یکدیگر وابسته هستند و با یک تایمر فاصله درخواست یک فایل اجرایی تا تامین آن نیاز توسط فایل اجرایی دیگر را به تعویق انداختم تا تداخلی برای کار نرم افزار پیش نیاید اگر چه کمتر کسی از چنین روشی استفاده می کند ولی به هر حال من هم به دلایلی از این روش استفاده کردم و برای همین هم با حدس و احتمال استفاده از تایمر را پیشنهاد دادم چون ممکن بود که در نرم افزار شما هم به نوعی گردش کار نرم افزاری شباهت هایی به این روش داشته باشد.
    به هر حال من از دستورات ویژوال بیسیک 6 با وجود اینکه می توان با استفاده از توابع خاص و منحصر به فرد و بسیار زیاد آن هر کاری را به راحتی انجام داد چندان اطلاعی ندارم و همواره سعی می کنم که اگر تابعی و یا روشی جواب نداد و یا به سراغ دیگر روش های ساده تر بروم چون با ترکیب روش ها و توابع ساده تر می توان جایگزینی برای بسیاری از توابع پیدا کرد و البته نه همه توابع و چون بیشتر به راهکارهای جدید و ابتکاری در برنامه نویسی علاقه مندم چنین روش هایی را پیشنهاد دادم.
    البته باز هم پیشنهاد می کنم که اگر برای حل مشکل تابع یاد شده نتوانستید راه حلی پیدا کنید و دیگران هم نتوانستند راه حل بهتری پیشنهاد بدهند از ساده ترین و ابتدایی ترین دستورات مانند ذخیره اطلاعات تنظیمات نرم افزاری در یک یا چند فایل تکست و یا کمی جالب تر در یک فایل غیر تکست و به صورت باینری استفاده کنید.
    قصد من از پاسخگویی به کامنت ها انگیزه دادن به کاربران برای بالا بردن خلاقیت و ابتکار آنها است تا خود آنها با تحلیل بتوانند راه حل مناسب را پیدا کنند.
    به هر حال امیدوارم که با تحلیل و ابتکار و همت ، خودتان سرانجام به پاسخ مناسب برای حل این مشکل برسید.
    با آرزوی موفقیت برای شما

  8. #8

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

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

    اما شما باید اون قسمت برنامتون رو به صورت یک پروژه بزارید تا بررسی بیشتر انجام بشه
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  9. #9
    کاربر دائمی
    تاریخ عضویت
    فروردین 1389
    محل زندگی
    اصفهان
    پست
    717

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    شما می تونید به سادگی از تابع savesetting و getsetting به راحتی استفاده کنید

  10. #10
    کاربر دائمی آواتار m.4.r.m
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    تبریز
    پست
    1,407

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    نقل قول نوشته شده توسط www.pc3enter.tk مشاهده تاپیک
    شما می تونید به سادگی از تابع savesetting و getsetting به راحتی استفاده کنید
    بله می تونین از توابع کار با ریجیستری این کارو بکنید و یا با فایل کار کنید . مثل این کار

    خب اوّل یک مثال میزنم و بعد میرم سره آموزش تا بهتر یاد بگیرید.
    یک پروژه جدید باز کنید و یک Command Button و یک TextBox بذارید تو فرمتون و کد زیر رو تو قسمت جنرال فرمتون کپی کنید :
    Private Sub Command1_Click()
    SaveSetting App.Title, "Setting", "Value", Text1.Text
    End Sub
    Private Sub Form_Load()
    Text1.Text = GetSetting(App.Title, "Setting", "Value", "Hello")
    End Sub
    برنامه رو اجرا کنید و هر چی دلتون میخواد تو TextBox وارد کنید و بعد کلید Command1 رو بزنید و از برنامه خارج بشید. حالا اگه دوباره برنامه رو اجرا کنید میبینید متنی که دفعه قبل وارد کرده بودید سره جاشه و پاک نشده !
    حالا بریم سره آموزش :
    دستوات SeveSetting ، GetSetting ، DeleteSetting و GetAllSettings از توابع خود ویژوال بیسیک هستند و نیازی به فراخوانی اونا نیست. طرز کار این دستورات خیلی ساده ست، این دستورات فقط برای ثبت و بازیابی تنظیمات استفاده میشن و هیچ کار دیگه ای انجام نمیدن، در واقع محدوده عملیات این دستورات در رجیستری محدود به این آدرس است :

    HKEY_CURRENT_USER\Software\VB and VBA Program Settings\PROGRAM NAME\SECTION\DATA
    یعنی شما با این دستوات نمیتونید به بخشهای دیگه رجیستری دسترسی داشته باشید. شکل کلّی این دستورات به صورت زیره :
    Sub SaveSetting(AppName As String, Section As String, Key As String, Setting As String)
    Function GetSetting(AppName As String, Section As String, Key As String, [Default]) As String
    Function GetAllSettings(AppName As String, Section As String)
    Sub DeleteSetting(AppName As String, [Section], [Key])
    SevaSetting : این دستور بسیار ساده ست فکر کنم با توضیحات بالا دیگه نیازی به آموزش نیست، ببینید در واقع این دستور اولین کاری که میکنه، یک پوشه که بیانگر نام برنامه ست (AppName) در آدرسی که گفتم میسازه. بعدش میره سراغ پوشه بعدی (Section) یعنی عملیاتی که قراره انجام بدیم مثلاً اگر قراره که موقعیّت فرم رو ذخیره کنیم بهترین نامی که میتونیم برای این عملیات بذاریم Position است و بعد از اون هم کلید یا همون مقداری که باید ذخیره بشه مثل Top. به دستور زیر توجّه کنید :
    SaveSetting "Project1", "Position", "Top", Me.Top
    دستور فوق باعث ساخته شدن آدرس زیر میشه (قسمت پر رنگ) :
    HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Project1\Position\
    که در اون آدرس هم، کلید یا همون فایل Top قرار داره که حاوی یک عدد است (موقعیّت بالای فرم). به این ترتیب ما تونستیم با این دستور اطّلاعاتی (موقعیّت قرم) رو در رجیستری ذخیره کنیم. حالا برای بدست آودرن این اطّلاعات باید از دستور GetSetting استفاده کنیم.
    GetSetting : این دستور هم خیلی ساده ست. شما باید آدرس و کلید مورد نظرتون رو تعیین کنید تا این تابع مقدار کلید رو برگردونه. به دستور زیر توجّه کنید :
    x = GetSetting("Project1", "Position", "Top", "2000")
    دستور فوق اطلاعات داخله فایله Top رو برمیگردونه و به فرم انتصاب میده. امّا اون عدد 2000 چیه؟ خب باید بگم که اون مقدار پیش فرضه تا اگه کلید Top در مسیر داده شده وجود نداشت و نتونست مقداری رو برگردونه، از مقدار پیش فرض استفاده کنه .
    DeleteSetting : این دستور برای پاک کردنه یک کلید (فایل) یا پوشه از مسیر داده شده ست. به عنوان مثال اگه شما بخواید کلید Top رو پاک کنید باید از دستور زیر استفاده کنید :
    DeleteSetting "Project1", "Position", "Top"
    در دستور بالا کلید Top حذف میشه و اگه کلید Top رو تعیین نکنیم (DeleteSetting "Project1", "Position") پوشه Position پاک میشه و اگه پوشه Position رو هم تعیین نکنیم (DeleteSetting "Project1") پوشه Project1 حذف میشه. و مسلّماً در صورتی که فایل یا پوشه یافت نشه با پیغام خطا مواجه میشید. تا اینجا که خیلی ساده امّا تابع GetAllSettings کمی فرق میکنه.
    GetAllSettings : این دستور کمی با دستورات قبلی تفاوت داره. اول با یک مثال شروع میکنم :
    Private Sub Form_Load()
    Me.AutoRedraw = True
    Dim MySettings As Variant, intSettings As Integer

    SaveSetting "MyApp", "Startup", "Number1", 50
    SaveSetting "MyApp", "Startup", "Number2", 22
    SaveSetting "MyApp", "Startup", "Number3", 36
    SaveSetting "MyApp", "Startup", "Number4", 197
    SaveSetting "MyApp", "Startup", "FName", "Amir"
    SaveSetting "MyApp", "Startup", "LName", "Amiri"
    SaveSetting "MyApp", "Startup", "Message", "Hello My Friend"

    MySettings = GetAllSettings(appname:="MyApp", section:="Startup")

    For intSettings = LBound(MySettings, 1) To UBound(MySettings, 1)
    Print MySettings(intSettings, 0) & " = " & MySettings(intSettings, 1)
    Next intSettings

    DeleteSetting "MyApp"
    End Sub
    خب این مثال میتونه کمک خیلی خوبی باشه. در واقع تابع GetAllSetting همون کاری رو میکنه که تابع GetSetting میکرد، با این تفاوت که در GetAllSettings کلید تعیین نمیشه بلکه پوشه ای که کلیدها در اون قرار دارن تعیین میشه و همچنین مقدار برگشتی هم یک مقدار از نوع متنی نیست بلکه آرایه ای دو بعدی از داده های موجود در پوشه ست که نام کلید در ستون 0 و مقدار کلید در ستون 1 قرار میکیره. میبینید که در ابتدا مقادیری رو با نامهای متفاوت در رجیستی ذخیره کردیم و بعد تمام اطّلاعات ذخیه شده رو با یک دستور درون متغیّر MySettings ذخیره کردیم، امّا دسترسی به این اطّلاعات چطور امکان پذیره؟
    ستون 0 ستون 1
    سطر 0 Number1 50
    سطر 1 Number2 22
    سطر 2 Number3 36
    سطر 3 Number4 197
    سطر 4 FName Amir
    سطر 5 LName Amiri
    سطر 6 Message Hello…
    شکل بالا ساختار متغیّر MySettings رو نشون میده :
    متغیّر MySettings که از نوع Variant تعریف شده، بوسیله تابع GetAllSettings به شکلی که میبینید مقدار دهی شده. حالا اگه به نام کلید نیازی ندارید میتونید فقط از ستون 1 که مقدارها درونش هستن استفاده کنید.
    در این مرحله اگه با آرایه ها آشنا باشید کار کردن با این تابع براتون آسونه. موفق باشید.
    آخرین ویرایش به وسیله vbhamed : جمعه 14 آبان 1395 در 08:02 صبح

  11. #11

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    سلام

    البته روش SaveSetting و GetSetting هم روش ساده و خوبیه ولی چون این دو تابع از رجیستری ویندوز برای ثبت دیتا استفاده می‌کنن و طبق تجربه خیلی اوقات نیاز به تعویض ویندوز احساس میشه و یا کاربر قراره برنامش رو روی دستگاهی دیگه نصب کنه، در اینصورت همه تنظیمات برنامه از بین میره ولی در روش فایلهای ini چون این فایلها کنار برنامه هستن به راحتی میشه ازشون کپی گرفت

    از تنظیمات رجیستری هم میشه کپی گرفت ولی نه به سادگی فایلهای ini و باید امکانش تو برنامه پیش بینی بشه چون از طریق خود برنامه Registry Editor ویندوز انجام این کار برای کاربر دردسر سازه
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  12. #12
    کاربر دائمی آواتار m.4.r.m
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    تبریز
    پست
    1,407

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    نقل قول نوشته شده توسط vbhamed مشاهده تاپیک
    سلام

    البته روش SaveSetting و GetSetting هم روش ساده و خوبیه ولی چون این دو تابع از رجیستری ویندوز برای ثبت دیتا استفاده می‌کنن و طبق تجربه خیلی اوقات نیاز به تعویض ویندوز احساس میشه و یا کاربر قراره برنامش رو روی دستگاهی دیگه نصب کنه، در اینصورت همه تنظیمات برنامه از بین میره ولی در روش فایلهای ini چون این فایلها کنار برنامه هستن به راحتی میشه ازشون کپی گرفت

    از تنظیمات رجیستری هم میشه کپی گرفت ولی نه به سادگی فایلهای ini و باید امکانش تو برنامه پیش بینی بشه چون از طریق خود برنامه Registry Editor ویندوز انجام این کار برای کاربر دردسر سازه
    بله این روش هم مهندسی هستش
    فایل های ضمیمه فایل های ضمیمه

  13. #13
    کاربر تازه وارد آواتار armeshi
    تاریخ عضویت
    دی 1392
    محل زندگی
    گنبدقابوس
    پست
    47

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    سلام
    این چرا میاد؟
    چطور برطرفش کنم
    ممنون
    Setting.png

  14. #14

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    فکر کنم از قبل یه سری تنظیمات داخل اون فایله ذخیره شده بوده حالا شما اومدی تغییر دادی خب بهت هشدار داره که میخای تغییرات اپدیدت بشه یا نه. چیز خاصی نیست

  15. #15
    کاربر تازه وارد آواتار armeshi
    تاریخ عضویت
    دی 1392
    محل زندگی
    گنبدقابوس
    پست
    47

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

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

    به نظرم موضوع " و ' اینه

  16. #16

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    من تست کردم هر کاری کردم اون پیغامه نیومد. ویندوزت چیه ؟

  17. #17

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    نقل قول نوشته شده توسط vbhamed مشاهده تاپیک
    سلام

    البته روش SaveSetting و GetSetting هم روش ساده و خوبیه ولی چون این دو تابع از رجیستری ویندوز برای ثبت دیتا استفاده می‌کنن و طبق تجربه خیلی اوقات نیاز به تعویض ویندوز احساس میشه و یا کاربر قراره برنامش رو روی دستگاهی دیگه نصب کنه، در اینصورت همه تنظیمات برنامه از بین میره ولی در روش فایلهای ini چون این فایلها کنار برنامه هستن به راحتی میشه ازشون کپی گرفت

    از تنظیمات رجیستری هم میشه کپی گرفت ولی نه به سادگی فایلهای ini و باید امکانش تو برنامه پیش بینی بشه چون از طریق خود برنامه Registry Editor ویندوز انجام این کار برای کاربر دردسر سازه

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

    Sub RegeditExport(sKey As String, sFilename As String)
    Shell "regedit.exe /s /e " & Chr(34) & sFilename & Chr(34) & " " & Chr(34) & sKey & Chr(34), vbHide
    End Sub


    Private Sub Command1_Click()
    RegeditExport "HKEY_CURRENT_USER\Software\VB and VBA Program Settings\bazar", CommonDialog1.FileName + ".reg"

    End Sub

    تمام زیر شاخه های کلید bazar رو کپی می کنه





  18. #18

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    سلام

    حالا فرض کنید ویندوز یهویی خراب شد و دیگه بالا نیومد، اونوقت تنظیماتی که کپی نگرفتین از بین میره و دسترسی دوباره بهش میشه کلی دردسر !

    ضمنا وقتی قرار باشه با این دستورات از تنظیمات برنامه در یک فایل کپی بگیریم خب دیگه چه کاریه، از همون اول از فایل خارجی استفاده می‌کنیم
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

  19. #19

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    خب نه آقا حامد خب زمانی که کاربر داره برنامه خارج میشه توی فرم بکاپ زمانیکه از اطلاعات بکاپ میگیره اینم اتوماتیک خودش میاد همون مسیر فایل بکاپ ذخیره میکنه و یه فایل regخروجی میده و در زمان بازیابی هم با یه دستور دیگه میاد اطلاعات ذخیره شده رو میفرسته به رجستری مثل همون Import خودش عمل میکنه..


    نمی دونم اما فرقی با فایل Ini نداره همون شکل هست فقط این فایل reg هست . من اینجوری استفاده کردم . به هر حال جواب کار منو می ده .

  20. #20

    نقل قول: ذخیره تنظیمات بعد از بستن برنامه

    سلام

    ببینید، وقتی کاری انجام میشه باید دید چه مزیتی برای شما ایجاد میکنه، شما داخل رجیستری ذخیره کنید، بعد حتما بکاپ باید بگیرید بعدش خروجی یا Export هم بگیرید و موقع ورود دوباره Import کنید
    خب اصلا هدف از این کارا چیه
    ممکنه موقع استفاده از توابع رجیستری بعضی آنتی ویروسها هم به برنامتون گیر بدن

    جواب کار شما رو میده اگر این وسط تو دیتابیس هم ذخیره کنید و چند تا کار دیگه هم انجام بدید بالاخره کار شما رو جواب میده ولی برای چی لقمه رو دور سرتون می‌چرخونید ؟
    اگر من و شما هر كدوم يك چيز ياد داشته باشيم و به هم ياد بديم، حالا هر كدوم دو تا چيز ياد داريم ! http://www.ArminaCo.com

تاپیک های مشابه

  1. ذخیره آخرین اکتیویتی و اجرای آن بعد از بستن برنامه
    نوشته شده توسط javadi3d در بخش Android Studio
    پاسخ: 1
    آخرین پست: پنج شنبه 22 آبان 1393, 22:19 عصر
  2. پاک شدن داده ها از بانک بعد از بستن برنامه (LINQ)
    نوشته شده توسط vbiman در بخش C#‎‎
    پاسخ: 5
    آخرین پست: پنج شنبه 19 خرداد 1390, 23:03 عصر
  3. پیغام خطای عجیب بعد از بستن برنامه
    نوشته شده توسط code_project در بخش VB.NET
    پاسخ: 2
    آخرین پست: دوشنبه 01 آذر 1389, 11:33 صبح
  4. پاسخ: 12
    آخرین پست: یک شنبه 23 خرداد 1389, 11:24 صبح
  5. پاسخ: 7
    آخرین پست: شنبه 04 اسفند 1386, 13:27 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •