17-10-2020, 08:08 PM
(16-10-2020, 06:46 PM)Delphi4Us كتب : الاساليب والاجراءات والطرق كثيرة وغير محدودة ويمكن البحث واختيار الانسب لك
على سبيل المثال لم اجربه
كود :Function ImageToHex(Image:Timage; LineLen:integer):Tstringlist; var ms:TmemoryStream; s:String; t:Ansistring; begin ms:=tmemorystream.Create; try image.Picture.SaveToStream(ms); setlength(t,ms.Size*2); BinToHex(ms.Memory^,Pansichar(t),ms.Size); Result:=Tstringlist.create; repeat s:=copy(t,1,LineLen); Result.Add(s); delete(t,1,LineLen); until t=''; finally ms.free end; end; procedure HexToImage(HexData:TstringList; var Image:Timage); var ms:TmemoryStream; s:String; begin ms:=TmemoryStream.Create; s:=HexData.Text; try ms.Size := Length(s) div 2; HexToBin(PChar(s), ms.Memory^, ms.Size); Image.Picture.LoadFromStream(ms); finally ms.free end; end;
وهذا مثال اخر لتحويل الصورة ووضع النص باداة نصوص
كود :implementation uses EncdDecd; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var ss :TMemoryStream; begin ss :=TMemoryStream.Create(); try Image1.Picture.Graphic.SaveToStream(ss); Memo1.Text := EncodeBase64(ss.Memory, ss.Size); finally ss.Free; end; end;
شكرا الطريقة تنجح لوحدها اي عند تحويل الصورة واستعادتها بواسطة encodebase64 لكن ما زلت اجد صعوبة في وضع النص داخل ملف الداتا الرئيسي كما في xml لان النصوص في ال record اعتقد انها محدودة الحجم او تحتاج الى مؤشرات لفعل ذلك فقد واجهت عدة اعتراضات
Integer overflow
Out of memory
فهل من نصيحة مع الشكر المسبق

