load exe to string & put in array of byte
#1
السلام عليكم
اولا عذرا على كثرة الاسئلة
ثانيا لدي مشكلة في نقل  string الى   array of byte
يتم النقل لكن عند التتبع يظهر مصفوفة مغايرة هذه صورة للايضاح


الملفات المرفقة
.jpg   Sans titre.jpg (الحجم : 104.21 ك ب / التحميلات : 16)
الرد
#2
وعليكم السلام
كود :
Uses: Windows; Type ByteArray = array of byte; function ByteArrayToStr(bArray: array of byte): String; begin     SetLength(Result,SizeOf(bArray));     CopyMemory(@Result[1],@bArray[0],SizeOf(bArray)); end; function StrToByteArray(Buffer: String): ByteArray; begin     SetLength(Result,lstrlen(PChar(Buffer)));     CopyMemory(@Result[0],@Buffer[1],Length(Buffer)); end;
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • mohamed49
الرد
#3
جزاك الله خيرا على الرد لكن لما لم تعمل معي ما السبب علما اني تتبع الدالة copymemory ووجدتها تتضمن الدالة move الكود

procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
begin
Move(Source^, Destination^, Length);
end;
الرد
#4
مازالت المشكلة قائمة هذه صورة للتوضيح
https://f.top4top.net/p_44114h6v1.jpg
الرد
#5
يبدو من الصورة الموقع الذي تنقل منه بيانات unicode.
لا يمكن مساعدتك بصورة ضع كود..
سبحان الله وبحمده سبحان الله العظيم
الرد
#6
الكود طويل جدا لهذا لم اضعه لان الموقع لم يقبله رفعته لك هذا هو الكود تفضل delphi 2010
https://up.top4top.net/downloadf-441l35oi1-rar.html
الرد
#7
إستعمل
كود :
function StrToByteArray(Buffer: AnsiString): TByteArray; begin    SetLength(Result,lstrlen(PChar(Buffer)));    CopyMemory(@Result[0],@Buffer[1],Length(Buffer)); end;
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • mohamed49
الرد
#8
جربتها من قبل ولم تنجح غير كذلك الى unicodestring ونفس المشكل ساعيد التجربة

ماز الت المشكلة قائمة للاسف
الرد
#9
التعديل الذي وضعته من المفروض ان يحل المشكل الذي تتكلم عنه.
إذا يوجد عندك مشكل ابحث عنه..
سبحان الله وبحمده سبحان الله العظيم
[-] كل من 1 user says قال شكرا ل Agmcz على المشاركة المفيدة
  • mohamed49
الرد
#10
نعم انا قمت بعدة تجارب اخرها عدلت على الكود الخاص بك بعمل حلقة على السترنغ ونسخ رقمين لكن اصبح يعيد نسخ العدد الذي يلي العدد المنسوخ

هذا هو الكود بعد التعديل

// Agmcz function
function StrToByteArr(Str: ansistring): TByteArray;
var
i:integer;
begin
SetLength(Result, Length(Str));
for i := 0 to Length(Str)-1 do
Result[i]:= StrToInt(Copy(str, (i), 2));
end;
///

وهذه صورة

http://www.3rbz.com/uploads/8437b9ecdff01.jpg

وعند التعديل مرة اخرى على الكود يظهر المصفوفة بعنصر واحد وفاصلة وانا اريده بعنصرين وفاصلة هذه صورة اخرى بعد التعديل

http://www.3rbz.com/uploads/b882a3ca69ab1.jpg

وهذا الكود الجديد

// Agmcz function
function StrToByteArr(Str: ansistring): TByteArray;
var i: integer;
str1Confusedtring;
begin
SetLength(Result,lstrlen(PChar(Str)));
for i := 0 to Length(Str) - 1 do
begin
Result[i] := ord(Str[i + 1]) - 48;
end;
///

برجاء اخي لو تجرب عندك اذا ما ياخذ من وقتك كثير
الرد


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


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