delphi4arab منتديات دلفي للعرب

نسخة كاملة : دالة GetPrivateProfileString
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
بسم الله الرحمن الرحيم

سوالي حول الدالة GetPrivateProfileString
المشكلة تحديدا في تحويل البارامترات من String الى PChar وحقيقة اتعبني
هذا الموصوع حتى مع دوال اخري
انا لم افهم تحديدا ضفات هذا النوع Type
ربما سبب هذا هو عدم فهمي للمؤشرات
لاسهل عليكم انا مبرمج VB6 & vb.net و لي برامج صغيرة بالاسمبلي
انا ممارس هندسة عكسية اساسا و تواجد اساتذة هذا العلم هنا هو ما حببني في دلفي
اشكركم جميعا
السلام عليكم ورحمة الله
الأخ 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

بالتوفيق.
الداله GetPrivateProfileString مستعمله مع TIniFileلتسهيل المهمه
User كتب :الداله GetPrivateProfileString مستعمله مع TIniFileلتسهيل المهمه
ممكن توضيح أكثر أخي User , أي مهمة ؟
بسم الله الرحمان الرحيم

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