delphi4arab منتديات دلفي للعرب

نسخة كاملة : load exe to string & put in array of byte
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
اولا عذرا على كثرة الاسئلة
ثانيا لدي مشكلة في نقل  string الى   array of byte
يتم النقل لكن عند التتبع يظهر مصفوفة مغايرة هذه صورة للايضاح
وعليكم السلام
كود :
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;
جزاك الله خيرا على الرد لكن لما لم تعمل معي ما السبب علما اني تتبع الدالة copymemory ووجدتها تتضمن الدالة move الكود

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

ماز الت المشكلة قائمة للاسف
التعديل الذي وضعته من المفروض ان يحل المشكل الذي تتكلم عنه.
إذا يوجد عندك مشكل ابحث عنه..
نعم انا قمت بعدة تجارب اخرها عدلت على الكود الخاص بك بعمل حلقة على السترنغ ونسخ رقمين لكن اصبح يعيد نسخ العدد الذي يلي العدد المنسوخ

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

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

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