PDA

View Full Version : مشکل در روند اجرایی کد؟



hojjatcroos
جمعه 01 خرداد 1388, 13:25 عصر
دوستان اگه لطف کنن بگن مشکل کد زیر در کجاست ممنون میشم من در لود کردن مشکل دارم که خطا میده



procedure SaveBmpTextFile(AFileName: String);
var
LImage: TMemoryStream;
LResult: TFileStream;
LMemo: TMemoryStream;
LImageSize: Integer;
begin
LImage := TMemoryStream.Create;
LMemo := TMemoryStream.Create;
LResult := TFileStream.Create(AFileName, fmCreate);
try
Form1.Image1.Picture.Bitmap.SaveToStream(LImage);
Form1.Memo1.Lines.SaveToStream(LMemo);
LImageSize := LImage.Size;
LResult.Write(LImageSize, SizeOf(LImageSize));
LImage.Position := 0;
LResult.CopyFrom(LImage, LImage.Size);
LMemo.Position := 0;
LResult.CopyFrom(LMemo, LMemo.Size);
finally
LImage.Free;
LMemo.Free;
LResult.Free;
end;
end;




procedure LoadBmpTextFile(AFileName: String);
var
LImage: TMemoryStream;
LSource: TFileStream;
LMemo: TMemoryStream;
LImageSize: Integer;
begin
LImage := TMemoryStream.Create;
LMemo := TMemoryStream.Create;
LSource := TFileStream.Create(AFileName, fmOpenRead);
try
LSource.Position := 0;
LImageSize := 0;
LSource.Read(LImageSize, SizeOf(LImageSize));
LImage.CopyFrom(LSource, LImageSize);
LMemo.CopyFrom(LSource, (LSource.Size-(LImageSize +
SizeOf(LImageSize))));
LImage.Position := 0;
Form1.Image1.Picture.bitmap.LoadFromStream(LImage) ;
LMemo.Position := 0;
Form1.Memo1.Lines.LoadFromStream(LMemo);
finally
LImage.Free;
LMemo.Free;
LSource.Free;
end;
end;

Saeed_m_Farid
جمعه 01 خرداد 1388, 14:40 عصر
دوستان اگه لطف کنن بگن مشکل کد زیر در کجاست ممنون میشم من در لود کردن مشکل دارم که خطا میده
من کد شما رو نگاه کردم، در دید اول مشکلی نداره؛ یعنی اگه همه چی همونطوری که پیش بینی مکردین باشه، برنامه کار میکنه؛ ولی اگه شما بجای Bitmap یه نوع دیگه تصویر مثلا JPG یا ICO یا ... تو Image1 لود کنید، برنامه فقط Stream محتویات Memo رو میریزه تو فایل و بالطبع موقع
LMemo.CopyFrom(LSource, (LSource.Size-(LImageSize +
SizeOf(LImageSize))));
به مشکل بر خواهد خورد، چون Stream موردنظر درست ذخیره نشده و فقط برای BMP کار میکنه.
به نظر من اگه نمیخوای زیاد کدت رو عوض کنی بهتره نوع فایل رو به BMP محدود کنی.
من دو تا فایل برای نمونه از تابع شما درست کردم که Success_Test.bsv رو به خاطر BMP f,nk میشه لودش کرد ولی دومی (Fault_Test.bsv) یه عکس JPG بوده که فایل غلطی تولید کرده (تو ضمیمه)