delphi4arab منتديات دلفي للعرب
من دلفي 7 الى xe3 - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : من دلفي 7 الى xe3 (/showthread.php?tid=5424)

الصفحات: 1 2


من دلفي 7 الى xe3 - oubaymahjor - 27-07-2013

السلام عليكم ورحمة الله تعالى وبركاته
ارغب طبعا ان اعرف كيف اعدل على سورس دلفي 7 ليعمل بدون مشاكل على دلفي xe3
ليس سورس محدد بل اي سوس بصفة عامة


من دلفي 7 الى xe3 - SMP3 - 27-07-2013

أهم شيئ في الاختلاف هو دعم اليونيكود 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




من دلفي 7 الى xe3 - Anew - 27-07-2013

وهل ex3 يتوجب ان يكون "فروم ورك " منصب على الجهاز او اي حزم اخرى ؟


من دلفي 7 الى xe3 - SMP3 - 28-07-2013

anew كتب :وهل ex3 يتوجب ان يكون "فروم ورك " منصب على الجهاز او اي حزم اخرى ؟

لا , لا يتطلب الفرام وورك :d


من دلفي 7 الى xe3 - oubaymahjor - 28-07-2013

شكرا اخي الغالي على ردك
مافهمته انه علي اعادة حساب حجم المتغيرات هل جميع المتغيرات ام فقط تلك المتعلقة بالنصوص ك word و char و string
وقد واجهة مشكلة اعتقد انها تخص ماذكرت في حساب حجم المتغيرات
وهذه المشكلة في دالة ReadProcessMemory
وقد اخترت هذا الاصدار لأنه سيمكنني من عمل برامج 64 بت وتحويل بعض السورسات اولا لكي اعمل عليه


من دلفي 7 الى xe3 - SMP3 - 28-07-2013

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



من دلفي 7 الى xe3 - oubaymahjor - 29-07-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;



من دلفي 7 الى xe3 - SMP3 - 29-07-2013

يجب أن تراعي نوع المتغيرات 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; 



من دلفي 7 الى xe3 - h-farid - 29-07-2013

كذلك المحرر Rave Reports قد استغنت عنه الشركة منذ DXE2 لذلك ان كانت برامجك تعتمد عليه فستظطر إلى إعادة بنائها على Fast Report أو ما شابه.


من دلفي 7 الى xe3 - oubaymahjor - 30-07-2013

شكرا اخي العزيز
تم الامر بنجاح وتم تحويل السورس ويعمل بشكل جيد
بالنسبة ل 64بت يجب القيام ببعض التعديلات ايضا حسب علمي هل لك ان تشرح لي ماذا يجب ان اغير
فقد جربت وظهرت اخطاء في بعض اكواد الاسمبلي في مكونات uallcollection