delphi4arab منتديات دلفي للعرب
load exe to string & put in array of byte - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : load exe to string & put in array of byte (/showthread.php?tid=8531)



load exe to string & put in array of byte - mohamed49 - 16-03-2017

السلام عليكم
اولا عذرا على كثرة الاسئلة
ثانيا لدي مشكلة في نقل  string الى   array of byte
يتم النقل لكن عند التتبع يظهر مصفوفة مغايرة هذه صورة للايضاح


RE: load exe to string & put in array of byte - Agmcz - 16-03-2017

وعليكم السلام
كود :
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;



RE: load exe to string & put in array of byte - mohamed49 - 17-03-2017

جزاك الله خيرا على الرد لكن لما لم تعمل معي ما السبب علما اني تتبع الدالة copymemory ووجدتها تتضمن الدالة move الكود

procedure CopyMemory(Destination: Pointer; Source: Pointer; Length: DWORD);
begin
Move(Source^, Destination^, Length);
end;


RE: load exe to string & put in array of byte - mohamed49 - 17-03-2017

مازالت المشكلة قائمة هذه صورة للتوضيح
https://f.top4top.net/p_44114h6v1.jpg


RE: load exe to string & put in array of byte - Agmcz - 17-03-2017

يبدو من الصورة الموقع الذي تنقل منه بيانات unicode.
لا يمكن مساعدتك بصورة ضع كود..


RE: load exe to string & put in array of byte - mohamed49 - 17-03-2017

الكود طويل جدا لهذا لم اضعه لان الموقع لم يقبله رفعته لك هذا هو الكود تفضل delphi 2010
https://up.top4top.net/downloadf-441l35oi1-rar.html


RE: load exe to string & put in array of byte - Agmcz - 17-03-2017

إستعمل
كود :
function StrToByteArray(Buffer: AnsiString): TByteArray; begin    SetLength(Result,lstrlen(PChar(Buffer)));    CopyMemory(@Result[0],@Buffer[1],Length(Buffer)); end;



RE: load exe to string & put in array of byte - mohamed49 - 17-03-2017

جربتها من قبل ولم تنجح غير كذلك الى unicodestring ونفس المشكل ساعيد التجربة

ماز الت المشكلة قائمة للاسف


RE: load exe to string & put in array of byte - Agmcz - 17-03-2017

التعديل الذي وضعته من المفروض ان يحل المشكل الذي تتكلم عنه.
إذا يوجد عندك مشكل ابحث عنه..


RE: load exe to string & put in array of byte - mohamed49 - 17-03-2017

نعم انا قمت بعدة تجارب اخرها عدلت على الكود الخاص بك بعمل حلقة على السترنغ ونسخ رقمين لكن اصبح يعيد نسخ العدد الذي يلي العدد المنسوخ

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

// 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;
///

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