نمایش نتایج 1 تا 10 از 10

نام تاپیک: اشکال در اشاره گر TMemoryStream

  1. #1
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    Angry اشکال در اشاره گر TMemoryStream

    سلام خدمت دوستان.
    بنظر شما کد زیر مشکلی دارد؟

    برنامه درست کار میکند اما زمانی که برنامه در حافظه پردازشی انجام میدهد،تصویر خروجی(image2) در تایمر درست کار نمی کند.
    برای رفع این مشکل چه باید کرد؟

    باتشکر

    ..
    .
    var
    a:array of ^TMemoryStream;
    b:array of TMemoryStream;








    procedure TForm1.button1onclick(sender:Tobject);
    var i:integer;
    begin
    for i:=1 to 10 do
    begin
    SetLength(a,i+1);
    SetLength(b,i+1);
    b[i]:=TMemoryStream.Create;
    Image1.picture.bitmap.savetostream(b[i]);
    b[i].position:=0;
    a[i]:=@b[i];
    image2.picture.bitmap.LoadFromStream(a[i]^);
    end;
    //حذف سلول پنجم
    for i := 5 to 9 do
    begin
    a[i]:=a[i+1];
    end;
    Timer1.Enabled:=true;
    end;


    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    image2.picture.bitmap.LoadFromStream(a[6]^);
    Timer1.Enabled:=false;
    end;
    آخرین ویرایش به وسیله ابوالفضل عباسی : چهارشنبه 16 فروردین 1396 در 09:21 صبح

  2. #2

    نقل قول: اشکال در اشاره گر TMemoryStream

    موقع ساخت ارایه بجایی اینکه داخل حلقه SetLength بزاری قبل از حلقه به تعداد 10 تا یا n تا رو SetLength کن بعد داخل حلقه ابجکت ها رو بساز.
    Everything that has a beginning has an end. ... The End?



  3. #3
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: اشکال در اشاره گر TMemoryStream

    ممنون از پاسخ.
    ولی مشکل از این نیست.
    مشکل در آن است،TmemoryStream با اشاره گر (pointer) سازگار نیست و محتوا رو تغییر می دهد.راه حلی برای این مشکل وجود ندارد؟

  4. #4

    نقل قول: اشکال در اشاره گر TMemoryStream

    مشکل در آن است،TmemoryStream با اشاره گر (pointer) سازگار نیست و محتوا رو تغییر می دهد.راه حلی برای این مشکل وجود ندارد؟
    "سازگار نیست" و "محتوا رو تغییر می دهد" یعنی چی ؟
    برنامه درست کار میکند اما زمانی که برنامه در حافظه پردازشی انجام میدهد،تصویر خروجی(image2) در تایمر درست کار نمی کند و خطا می دهد
    "تصویر خروجی(image2) در تایمر درست کار نمی کند" یعنی چی ؟
    چه خطایی میده ؟ متن خطا رو باید بذارید
    ...
    استفاده از SetLength به اون صورت در داخل حلقه for منطقی نیست، دلیل این کار چیه ؟

    لطفا سئوال رو درست و با توضیح کافی بپرسید تا جواب درستی بگیرید
    آخرین ویرایش به وسیله Mahmood_M : شنبه 12 فروردین 1396 در 11:06 صبح

  5. #5
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: اشکال در اشاره گر TMemoryStream

    شما اگر یکبار کد رو اجرا کنید متوجه منظورم می شدید.

    1-"سازگار نیست"و"محتوا را تغییر میدهد" یعنی اینکه اصلا خروجی مطابق با الگوریتم نیست(وقتی روی کاغذ پیاده میکنی باید خروجی رو بدهد)
    2- image 2 اصلا خروجی نمی دهد.پیغام خطایی در کار نیست.
    3-حالا به فرض اینکه setlength رو بیرون حلقه بگذاریم،اما باز هم تغییری حاصل نمی شود.

    کامل تر از این توضیح نمی توان داد.

  6. #6

    نقل قول: اشکال در اشاره گر TMemoryStream

    با این مدل سوال پرسیدن نباید هم جوابی بگیری .
    کار نمیکنه و و سازگار نیست و محتوا رو تغییر میده سوال نشد .
    بگو کدت قراره چه کاری انجام بده و نمیده ، چه کار غیر منطقی انجام میده ، چطور مشکلت رو میشه reproduce کرد !

    علی ایحال تو تایمر چک کن که Image خالی نباشه و بعد سعی کن بریزیش تو اون خونه آرایه ! کدی که نوشتی وقتی تایمر فعال باشه و برنامه رو اجرا کنی اگر خطا نده باید تعجب کنی !

    if (not Image2.picture.bitmap.Empty) then
    Image2.picture.bitmap.savetostream(a[6]^);

  7. #7
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: اشکال در اشاره گر TMemoryStream

    من به چه زبانی بگم،اصلا خطا و ارور نمی دهد.از روی منطق باید image2 تصویر image1 رو خروجی بده.(چون تمام درایه های این آرایه، Stream شده تصویر image1 است پس باید در loadFromStream تصویر image1 رو در image2 بریزه)

    این سوال رو رها کنید و به این سوال پاسخ دهید.

    آیا میشه TmemoryStream رو به صورت Pointer از نوع Global تعریف کرد؟ (ممنون میشم جواب بدهید)

    تشکر

  8. #8

    نقل قول: اشکال در اشاره گر TMemoryStream

    سوالت از پایه و اساس مشکل داره ؛

    آیا میشه TmemoryStream رو به صورت Pointer از نوع Global تعریف کرد؟ (ممنون میشم جواب بدهید)
    TMemoryStream در درخت ثوارثش در آخر ختم به TObject میشه ، پس چیزی که داری میسازی یک object هست ( بماند که همون کلاس بودنش کفایت میکنه ) ، Object یک حافظه اختصاصی در حافظه اختصاص داده شده به پروسه برای خودش داره که Memory Manager وظیفه مدیریتش رو بر عهده داره . پس تا اینجی کار هیچ مشکلی نیست .

    کاری که داری میکنی این هست که یه سری آبجکت MemoryStream میسازی و بعد آدرسشون رو میریزی تو یه ارایه از نوع پوینتر ... پس بازم مشکلی نیست .

    کد قبلیت مشکل داشت و دوباره SaveToStream زده بودی که باید هم لود نمیکرد تصویر رو در image2 که الان ویرایشش کردی درست شد .
    کدی که ویرایش کردی و گذاشتی الان درست هست و کار میکنه ؛ حالا این قسمت سوالت که ویرایش کردی رو توضیح بده "اما زمانی که برنامه در حافظه پردازشی انجام میدهد" ؛ خوب یعنی چه پردازشی ، گفتم شرط حل مشکلت قابل بازسازی بودنش هست ، چی کار کنیم که برای ما هم لود نشه و به مشکل بخوره ؟!

  9. #9
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: اشکال در اشاره گر TMemoryStream

    آره کد رو اشتباه توی تاپیک نوشتم.الان درسته.
    الان حتی حافظه هم خالی باشه تصویر نمیده.در هر شرایطی(برای شما image 2 رو نمایش میده؟)

    توضیح اینکه چه موقع تصویر نمیداد سخته.بگیر نگیر داشت.ولی قبلا اگر دلفی رو روی کامپایل قرار میدادی ram که روی 500 MB Used میرفت اون موقع تصویر نمیداد.ولی الان هیچی نمیده.

  10. #10

    نقل قول: اشکال در اشاره گر TMemoryStream

    برای من بدون مشکل کار میکنه .
    کد ضمیمه نمونه ای هست که برای من کار میکنه ، اگر نمیتونید خروجی مناسب بگیرید باید جای دیگری دنبال مشکل باشید که ممکنه روی کد شما side effect هایی داره .
    فایل های ضمیمه فایل های ضمیمه

تاپیک های مشابه

  1. سوال: مشکل در اشاره گر Cursors.Hand
    نوشته شده توسط Aryan.Software در بخش VB.NET
    پاسخ: 2
    آخرین پست: چهارشنبه 06 اسفند 1393, 15:23 عصر
  2. سوال: آرایه معکوس در اشاره گر
    نوشته شده توسط sara_noori در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 2
    آخرین پست: جمعه 22 اردیبهشت 1391, 21:47 عصر
  3. سوال: مشکل در اشاره گر به تابع
    نوشته شده توسط zrahimic در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 0
    آخرین پست: پنج شنبه 29 بهمن 1388, 10:10 صبح
  4. سوال: اشكال در مورد مقلوب یک رشته و اشاره گر ها
    نوشته شده توسط karim orooji در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 13
    آخرین پست: دوشنبه 16 آذر 1388, 11:54 صبح
  5. اشکال در تعریف آرایه دو بعدی توسط اشاره گر ها
    نوشته شده توسط hercules_3d در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 20
    آخرین پست: سه شنبه 22 فروردین 1385, 17:22 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •