PDA

View Full Version : (کار با فایلها)چطور میتونم مشخص کنم که تو وی بی چه سطر از یک فایل رو بخونه؟



hex161
جمعه 07 مرداد 1384, 03:25 صبح
با سلام.
من یه نرم افزار پخش صوتی و تصویری طراحی کردم .ولی میخواستم این امکان رو بهش بدم که چیزای کوچولو رو که کاربر تغییر داده ذخیره کنه. از جمله تغییر صدا .من میخوام که اینها تو یک فایل سطر به سطر ذخیره بشن و وقتی برنامه بسته و مجددا باز شد تغییرات رو باز خوانی کنه.
خوشبختانه تغییرات سطر به سطر ذخیره میشن ولی موقع خوندنشون نمدونم چه کار کنم که به وی بی بگم مثلا سطر دوم مقدار صدا و سطر سوم تنظیم اکولایزر و غیره میباشد.
ممنون

PalizeSoftware
جمعه 07 مرداد 1384, 07:51 صبح
دوست عزیز این روش رو کنار بگذار و حداقل برو سراغ فایهای ini که دیگه نگران اینکه کدم سطر چی هست و برای خودت قاعده‌ای بذاری نباش.
اینم نمونه:


Private Declare Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long

Private Declare Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Private Sub Form_Load()
Dim Ret As String, NC As Long

'Write the setting to the file (c:\test.ini) under
' Project1 -> Keyname
WritePrivateProfileString App.Title, "KeyName", "This is the value", "c:\test.ini"
'Create a buffer
Ret = String(255, 0)
'Retrieve the string
NC = GetPrivateProfileString(App.Title, "KeyName", "Default", Ret, 255, "C:\test.ini")
'NC is the number of characters copied to the buffer
If NC <> 0 Then Ret = Left$(Ret, NC)
'Show our string
MsgBox Ret
End Sub

R_BABAZADEH
جمعه 07 مرداد 1384, 14:21 عصر
منم موافقم

hex161
شنبه 08 مرداد 1384, 01:45 صبح
ممنون .
حالا چطور میشه خوندش؟
منظورم اینکه مثلا سطر Keyname رو تو یه تکست باکس بفرستیم.

ممنون.

PalizeSoftware
شنبه 08 مرداد 1384, 01:53 صبح
حالا چطور میشه خوندش؟
منظورم اینکه مثلا سطر Keyname رو تو یه تکست باکس بفرستیم.

دوست عزیز ما سطر KeyName نداریم. بلکه KeyName نام متغیر ما محسوب میشه.
با تابع GetPrivateProfileString می‌توانیم مقدار را بخوانیم و با WritePrivateProfileString مقدار آنرا ایجاد یا تصحیح کنیم.
در سورس بالا مقدار برگشتی در Ret در واقع مقدار متغیر KeyName محسوب می‌شه.
http://asefsoft.com/qsimages/155.gif

hex161
شنبه 08 مرداد 1384, 03:51 صبح
ممنون . عالی بود .
این روش کار با فایلهای Ini خیلی بهتر از روشی هست که من استفاده میکردم .
بازم ممنون.

PalizeSoftware
شنبه 08 مرداد 1384, 04:02 صبح
البته این رو بدونید که فایلهای ini تقریبا از دور خارج شده‌اند و رجیستری جای اون رو گرفته. ولی رجیستری با از بین رفتن ویندوز نیز از بین می‌رود و نابود می‌شود و چنانچه برنامه‌ای تنظیماتی رو در اون ذخیره کرده باشه نیز تنظیمات رو از دست می‌ده ولی خوشبختانه فایلهای ini‌ بر روی سیستم باقی می‌مونه و این یک مزیت بشمار می‌ره.
http://asefsoft.com/qsimages/109.gif