دالة GetPrivateProfileString
#1
بسم الله الرحمن الرحيم

سوالي حول الدالة GetPrivateProfileString
المشكلة تحديدا في تحويل البارامترات من String الى PChar وحقيقة اتعبني
هذا الموصوع حتى مع دوال اخري
انا لم افهم تحديدا ضفات هذا النوع Type
ربما سبب هذا هو عدم فهمي للمؤشرات
لاسهل عليكم انا مبرمج VB6 & vb.net و لي برامج صغيرة بالاسمبلي
انا ممارس هندسة عكسية اساسا و تواجد اساتذة هذا العلم هنا هو ما حببني في دلفي
اشكركم جميعا
الرد
#2
السلام عليكم ورحمة الله
الأخ yanes أهلا ومرحبا بك في المنتدى Smile
لنشاهد تعريف التابع GetPrivateProfileString من Win32 SDK
كود :
DWORD GetPrivateProfileString( LPCTSTR lpAppName, // points to section name LPCTSTR lpKeyName, // points to key name LPCTSTR lpDefault, // points to default string LPTSTR lpReturnedString, // points to destination buffer DWORD nSize, // size of destination buffer LPCTSTR lpFileName // points to initialization filename );

من خلال التعريف يمكن أن نصيغ تابع بلغة دلفي بهذا الشكل:
PHP كود :
function GetKeyValue(const Root, sValue: string; aFileName: string): string;
begin
  SetLength
(Result, MAX_PATH);
  
SetLength(Result,
    
GetPrivateProfileString(
    
PChar(Root), //اسم الجذر
    
PChar(sValue), //اسم المفتاح
    
'', //القيمة الافتراضية
    
@Result[1], //قيمة المفتاح
    
Length(Result), //حجم
    
PChar(aFileName))); //اسم الملف
end;

//مثال لقراءة محتوى ملف INI
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage
(GetKeyValue('Root', 'DelphiRoot', ExtractFilePath(ParamStr(0)) + 'Delphi.ini'));
end; 

إقتباس :المشكلة تحديدا في تحويل البارامترات من String الى PChar وحقيقة اتعبني
معك حق،هناك لبس بخصوص ذلك
إقتباس :ربما سبب هذا هو عدم فهمي للمؤشرا
سأكتب موضوع حول ذلك خلال هذه الأيام بشيء من التفصيل إن شاء الله Smile

بالتوفيق.
الرد
#3
الداله GetPrivateProfileString مستعمله مع TIniFileلتسهيل المهمه
الرد
#4
User كتب :الداله GetPrivateProfileString مستعمله مع TIniFileلتسهيل المهمه
ممكن توضيح أكثر أخي User , أي مهمة ؟
I'M Fly Like A G6

الرد
#5
بسم الله الرحمان الرحيم

شكرا جزيلا على تفاعلكم , كانت نيتي بالفعل هي الكتابة في ملف ini
و لعدم معرفتي التامة بدلفي لكن بالبحث في ملفات الHelp و صلت الى TIniFile
و سأحضر مثالا صغيرا للاخوة لعله يفيد الاخوة المبتدئين مثلي
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم