مشکل با خواندن یک عکس از رجیستری
سلام:قلب:
من با استفاده از کد زیر یک فایل png را در رجیستری ذخیره کرده ام.
procedure TForm1.Button1Click(Sender: TObject);
var
Reg: TRegistry;
MyStream: TMemoryStream;
begin
MyStream := TMemoryStream.Create;
Reg := TRegistry.Create;
try
Reg.OpenKey('Software\Fava', True);
Reg.WriteBinaryData('ICO', MyStream, MyStream.Size);
MyStream.LoadFromFile('d:\clock.png');
finally
Reg.Free;
MyStream.Free;
end;
end;
کد بالا به درستی کار می کند و مشکلی هم ندارد.
از کد زیر هم می خواهم برای خواندن عکس و قرار دادن آن در یک کنترل Image استفاده کنم که این کد با مشکل مواجه می شود:
procedure TForm1.Button2Click(Sender: TObject);
var
Reg: TRegistry;
MyStream: TMemoryStream;
Buf: array of byte;
I: Integer;
begin
MyStream := TMemoryStream.Create;
Reg := TRegistry.Create;
try
Reg.OpenKey('Software\Fava', True);
SetLength(Buf, Reg.GetDataSize('ICO'));
Reg.ReadBinaryData('ICO', PByte(Buf)^, Reg.GetDataSize('ICO'));
MyStream.Write(Buf, SizeOf(Buf));
MyStream.Position := 0;
Image2.Picture.Bitmap.LoadFromStream(MyStream);
finally
Reg.Free;
MyStream.Free;
end;
end;
به نظر شما مشکل از کجاست؟ :متفکر:
با تشکر... :قلب:
نقل قول: مشکل با خواندن یک عکس از رجیستری
نقل قول:
کد بالا به درستی کار می کند و مشکلی هم ندارد.
وقتی هنوز موفق به خوندن فایل از رجیستری نشدید چطوری میفرمایید مشکلی نداره ؟
نقل قول: مشکل با خواندن یک عکس از رجیستری
نقل قول:
وقتی هنوز موفق به خوندن فایل از رجیستری نشدید چطوری میفرمایید مشکلی نداره ؟
به رجیستری رفتم و دیدم که فایل ذخیره شده.
نقل قول: مشکل با خواندن یک عکس از رجیستری
نقل قول:
نوشته شده توسط
شاهین عشایری
به رجیستری رفتم و دیدم که فایل ذخیره شده.
خب مطمئن هستید فایل به صورت کامل و بدون مشکل ذخیره میشه ؟ و ضمناً در زمان بارگزاری فایل چه خطایی دریافت میکنید ؟ (خطا مربوط به چه قسمتی هست ؟)
نقل قول: مشکل با خواندن یک عکس از رجیستری
نقل قول:
خب مطمئن هستید فایل به صورت کامل و بدون مشکل ذخیره میشه ؟ و ضمناً در زمان بارگزاری فایل چه خطایی دریافت میکنید ؟ (خطا مربوط به چه قسمتی هست ؟)
با خطای Stream Read Error مواجه میشم. در ضمن محلی که خطا رخ میده نامشخص است(شاید بخاطر اینکه خطا از طرف یکی از فایلهای کتابخانه ای ویندوز صادر می شود.). در ضمن با اطمینان بالای 90% حدس می زنم که اطلاعات درست ذخیره شده است، چون موقعی که از Reg.GetDataSize('ICO') استفاده میکنم مقدار برگشتی برابر با اندازه فایل است.
نقل قول: مشکل با خواندن یک عکس از رجیستری
کد نوشتن در رجیستری تون که مشکل داره؛ وقتی هنوز فایل رو در Stream لود نکردید، چی رو در رجیستری نوشتید؟! LoadFromFile رو که بعد از WriteBinaryData فراخوانی کردید! از طرف دیگه، MyStream رو برای چی به WriteBinaryData پاس دادید؟! باید یا از TMemoryStream.Memory استفاده می کردید، یا بعد از لود کردن فایل در Stream، اون رو در یک بافر می ریختید، و بافر رو به WriteBinaryData پاس می کردید.
نقل قول:
با خطای Stream Read Error مواجه میشم. در ضمن محلی که خطا رخ میده نامشخص است(شاید بخاطر اینکه خطا از طرف یکی از فایلهای کتابخانه ای ویندوز صادر می شود.).
به خاطر اینکه use debug .dcus رو در تنظیمات پروژه فعال نکردید، تا دیباگر داخل فایل های rtl دلفی step کنه.