المشاركات : 9
المواضيع 1
:
: 0
الإنتساب : Jul 2013
السلام عليكم ورحمة الله تعالى وبركاته
ارغب طبعا ان اعرف كيف اعدل على سورس دلفي 7 ليعمل بدون مشاكل على دلفي xe3
ليس سورس محدد بل اي سوس بصفة عامة
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
أهم شيئ في الاختلاف هو دعم اليونيكود Unicode
في أغلب الأحيان لن تضطر لتغيير أي شيئ بالكود .
في حالات خاصة ستحتاج الى اجراء بعض التعديلات على الكود
عند الانتقال الى نسخ دلفي التي تدعم ال Unicode..يجب مراعاة حجم ال Data
مثلا :
D7 : SizeOf char = 1 byte
DXE3 : SizeOf char = 1 WORD
ستحتاج الى اعادة حساب الحجم المناسب للمتغيرات المحجوزة للدوال FillChar,GetMem,..
كود :
D7: FillChar(X,Size)
DUnicode: FillChar(X,Size*2)
ان واجهت مشاكل .. قم باستبدال النوع Char ب AnsiChar
ان استخدمت دوال ApiFunctionA : Ansi .. يتوجب عليك أن تقوم باستبدال :
D7: Char --> DUnicode AnsiChar
D7: PChar --> DUnicode PAnsiChar
Open Your Source .. Open Your Mind
المشاركات : 111
المواضيع 37
:
: 0
الإنتساب : Mar 2013
وهل ex3 يتوجب ان يكون "فروم ورك " منصب على الجهاز او اي حزم اخرى ؟
سبحان الله و بحمده سبحان الله العظيم
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
anew كتب :وهل ex3 يتوجب ان يكون "فروم ورك " منصب على الجهاز او اي حزم اخرى ؟
لا , لا يتطلب الفرام وورك :d
Open Your Source .. Open Your Mind
المشاركات : 9
المواضيع 1
:
: 0
الإنتساب : Jul 2013
شكرا اخي الغالي على ردك
مافهمته انه علي اعادة حساب حجم المتغيرات هل جميع المتغيرات ام فقط تلك المتعلقة بالنصوص ك word و char و string
وقد واجهة مشكلة اعتقد انها تخص ماذكرت في حساب حجم المتغيرات
وهذه المشكلة في دالة ReadProcessMemory
وقد اخترت هذا الاصدار لأنه سيمكنني من عمل برامج 64 بت وتحويل بعض السورسات اولا لكي اعمل عليه
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
oubaymahjor كتب :هل جميع المتغيرات ام فقط تلك المتعلقة بالنصوص ك word و char و string
وهذه المشكلة في دالة ReadProcessMemory
النوع WORD نوع قياسي .. لا يتغير أبدا WORD=2 Bytes .
النوع string حقيقتا هو عبارة عن مؤشر لسلسلة نصية في الذاكرة حجمه = DWORD
بالنسبة للدالة ReadProcessMemory :
ممكن سبب الخطأ يكون :
كود :
D7:
function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer;
nSize: [color=red]DWORD[/color]; var lpNumberOfBytesRead: [color=red]DWORD[/color]): BOOL; stdcall;
DXE3:
function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer;
nSize: [color=red]SIZE_T[/color]; var lpNumberOfBytesRead: [color=Red]SIZE_T[/color]): BOOL; stdcall;
أو السبب ممكن يكون في lpBuffer
Open Your Source .. Open Your Mind
المشاركات : 9
المواضيع 1
:
: 0
الإنتساب : Jul 2013
شكرا اخي العزيز
لكنني لم اتمكن من معرفة المشكلة في هذه الدالة وقد استخدمت في السورس اكثر من مرة
مع انني غيرت ماذكرت لي الا ان الخطأ لم يتغير
كود :
E2033 Types of actual and formal var parameters must be identical
كود :
var
Process: dword;
BytesRead: dword;
Usr: dword;
Len: word;
begin
ReadProcessMemory(Process, pointer(Usr + $38), @Len, 2, BytesRead);
end;
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
يجب أن تراعي نوع المتغيرات SIZE_T & DWORD
PHP كود :
var
Process: THandle;
BytesRead: SIZE_T;
Usr: DWORD;
Len: DWORD;
begin
Len := 0; // this is very important !!
ReadProcessMemory(GetCurrentProcess, Pointer(Usr + $38), @Len, 2, BytesRead);
end;
Open Your Source .. Open Your Mind
المشاركات : 400
المواضيع 2
:
: 274
الإنتساب : Nov 2009
كذلك المحرر Rave Reports قد استغنت عنه الشركة منذ DXE2 لذلك ان كانت برامجك تعتمد عليه فستظطر إلى إعادة بنائها على Fast Report أو ما شابه.
من قال حاد عن أصله أو قال مات فقد كذب
المشاركات : 9
المواضيع 1
:
: 0
الإنتساب : Jul 2013
شكرا اخي العزيز
تم الامر بنجاح وتم تحويل السورس ويعمل بشكل جيد
بالنسبة ل 64بت يجب القيام ببعض التعديلات ايضا حسب علمي هل لك ان تشرح لي ماذا يجب ان اغير
فقد جربت وظهرت اخطاء في بعض اكواد الاسمبلي في مكونات uallcollection