عندي مشكل في نقل البيانات عند تحويلها الى سترنغ عن طريق copymemory عند تتبعها عن طريق عمل debug لها ارى ان البيانات مختلفة تماما هذه صورة وهذا المشروع
![[صورة: p_460n8s0o1.jpg]](https://c.top4top.net/p_460n8s0o1.jpg)
وهذا المشروع
قلت ربما يتم التحويل عند النقل من decimal الى hex لكن المفروض ان 85 تعطينا 55وليس 56 و139 تعطينا بدورها حرف é
ربما فهمت المشكل وهي انني لم احول الشال كود حقيقة الى سترينغ لذلك لم يتم وضع البيانات بالشكل الصحيح ام اني مخطا
انا لا اعرف
لم اتعامل من قبل مع المؤشرات او النسخ بدوال مثل CopyMemory لعل احد مجرب هذه الامور يمر من هنا
(06-04-2017, 02:46 PM)Delphi4Us كتب : [ -> ]انا لا اعرف
لم اتعامل من قبل مع المؤشرات او النسخ بدوال مثل CopyMemory لعل احد مجرب هذه الامور يمر من هنا
جزاك الله خيرا اخي على الرد
وعليكم السلام
arrRunPE ليست مصفوفة وإنما هي سلسلة نصية في حالتك
فما داعي لكتابتها بهذا الشكل؟؟
عملية النسخ سليمة
إنتبه معي لما يساوي هذه السلسلة في جدول الاسكي "85,139,236"
8 = 56
5 = 53
, = 44
1 = 49
3 = 51
9 = 57
, = 44
2 = 50
3 = 51
6 = 54
-------------
بما أنك تتعامل مع exe file فلماذا حولته إلى هذا الشكل
الق نظرة في هذا الموضوع
http://delphi4arab.net/forum/showthread.php?tid=5353
واستعمل الدالة
function FileToStr(sPath

tring; var sFile

tring):Boolean;
......
راح اشوف المشكل انه عند استعمالها تلتقي ب nullbyte حاولت عمل replace لها بحرف اخر ولكن لم ينجح واخيرا قمت بحذف nullbyte وتم الحل لكن لم يشتغل جربت خوارزميات عديدة نفس المشكل
القيت نظرة في هذا الموضوع
http://delphi4arab.net/forum/showthread.php?tid=5353
يبدوا الامر معقد نوعا ما انا استعيض عن هذه الاكواد بطريقة مبسطة قراءة الملف في الميموري ستريم ثم وضع السترنغ في متغير بالاستعانة بدالة setstring وعمل حلقة على السترنغ ان كان هناك null byte اقوم بحذفه كود لا يتعدى 6 اسطر ربما لكن حتى مع تحويله الى سترنغ عند نقله عبر copymemory أجد انه لا ينقله كما هو وتظهر الرسالة المعهودة runtime error لو في مشروع بسيط لفهم الفكرة اكون شاكر جدا مشروع يكون بدون عملية تشفير ان امكن
هل حذف nullbyte يؤثر على الملف الناتج ؟
صراحة لا أعرف كيف سأجيبك عليك
تدور تدور وترجع إلى نفس السؤال؟
ماذا تريد بالضبط؟
أنت أكيد تريد تشفير المصفوفة؟
شوف اخي المشروع الذي صححته لي مرة تتذكره اكيد هنا
http://www.delphi4arab.net/forum/showthr...p?tid=8425
اردت بدا ان تكون مصفوفة بايتات تكون مصفوفة سترينغ الشال كود والملف معا المشكل انه عند تحويل المصفوفتين الى سترنغ ثم اعادة ارجاعها لا تشتغل تمام جربت كذلك تشغيل السترنغ مباشرة لكن لم انجح عن طريق التعديل في كود التشغيل السابق
var
RunPEProc:procedure(Buffer

Char;BufferLen

WORD); stdcall;
begin
RunPEProc := @teststring[1];
RunPEProc(@exestring[1],length(exestring));
end.
كتبت هذا الكود لتحويل المصفوفة الخاصو بالشال كود الى سترنغ لاني اخطات في التحويل في الكود السابق
for c in arrRunPE do
begin
str:=str+ inttostr(ord(c))+',';
end;
str1:=EncodeString(str);
ونفس الكود ايضا لتحويل مصفوفة بايتات الملف
for c in test do
begin
str:=str+ inttostr(ord(c))+',';
end;
str1:=EncodeString(str);
يعني بالمختصر المفيد هل يمكن تحويل المصفوفتين الى سترنغ وتشغيلهما عبر هذا الفنكشن
var
RunPEProc:procedure(Buffer

Char;BufferLen

WORD); stdcall;
begin
RunPEProc := @firststring[1];
RunPEProc(@secondstring[1],length(secondstring));
end.