EasyDelphi Q&A

.تم الانتقال للموقع الجديد . وسيبقى الموقع القديم هذا متاح للقراءة فقط حتى الانتهاء من نقل كل الاسئلة إلى الموقع الجديد

يمكنك طرح الاسئلة والنقاشات في الموقع الجديد. الذهاب للموقع الجديد


+1 تصويت
45 مشاهدات

السلام عليكم

كيف يمكنني ستقبال صورة دون معرفة الحجم عن طريق مكون tserversocket  عن طريق قراءة البينات كنص وعن طريق قراءتها ك buffer

الكود

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  s, sl: string;
begin
  
  s:= Socket.ReceiveText;
   Data:= TMemoryStream.Create;
    try
   Data.Write(s[1], length(s));//need loop hier to all data
    if lastchar received from s then
    begin
      Data.Position:= 0;
      Image1.Picture.Bitmap.LoadFromStream(Data);
      Data.Free;
      Socket.Close;
    end;
  except
    Data.Free;
  end;
end;

 

سُئل في تصنيف vcl بواسطة (1,360 نقاط) | 45 مشاهدات
0
ارجو ان يكون الشرح واضح بارك الله فيكم

1 إجابة واحدة

+1 تصويت

جرب هذا . ( انا لم اجربه ) 
الفكرة هي عمل حلقة قراءة ما دام هنا استلام للبيانات While Socket.ReceiveLength > 0  . وتجميعها في buffer . 
 

procedure TService1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  Buffer: PChar;
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  Buffer := nil;
  while Socket.ReceiveLength > 0 do begin
    Buffer := AllocMem(Socket.ReceiveLength);
    try
      Socket.ReceiveBuf(Buffer^, Socket.ReceiveLength);
      Stream.Write(Buffer^, StrLen(Buffer));
    finally
      FreeMem(Buffer);
    end;
  Stream.Seek(0, soFromBeginning);
  Image1.Picture.Bitmap.SaveToStream(Stream);
  Stream.Free;
end;

 

تم الرد عليه بواسطة (32,580 نقاط)
0
شكرا استاذ سامر  بعد الحفظ الحجم 0
0
الاول . هل ظهر الصورة في image1 ام لا ؟
0
لا لم تظهر رسالة الخطا

cannot load image

عند حذف السطر

واستبداله ب Stream.SaveToFile('D\Received.jpg');

رسالة الخطا

invalid pointer operation

اسئلة متعلقة

+1 تصويت
1 إجابة
سُئل مايو 27، 2019 في تصنيف vcl بواسطة Hafi Ski (320 نقاط) | 70 مشاهدات
+1 تصويت
1 إجابة
سُئل أبريل 30، 2019 في تصنيف vcl بواسطة Hafi Ski (320 نقاط) | 110 مشاهدات
0 تصويتات
1 إجابة
سُئل مارس 18، 2019 في تصنيف vcl بواسطة Nour Eldeen (320 نقاط) | 82 مشاهدات
+1 تصويت
0 إجابة
سُئل يناير 24، 2019 في تصنيف vcl بواسطة taha (130 نقاط) | 71 مشاهدات
0 تصويتات
1 إجابة
سُئل يناير 18، 2019 في تصنيف vcl بواسطة fares (220 نقاط) | 111 مشاهدات
ادعُ اصدقائك في الفايسبوك لمشاركتك
Comodo SSL

مرحبًا بك إلى EasyDelphi Q&A، حيث يمكنك طرح الأسئلة والحصول على الإجابة عليها من المستخدمين الآخرين.

لا يسمح بطلب او السؤال عن كراك او تفعيل او كسر او فك او اي شيء يخالف اتفاقيات الترخيص  مهما كان السبب ومهما كان البرنامج ونوعه. ولا حتى نشر روابط تحتوي على مثل هذه الاشياء لا في الاسئلة ولا في الاجابات ولا التعليقات . نهائيا

497 سؤال
752 إجابة
1,417 تعليق
271 مستخدم