function LoadPicture(aStr: Ansistring; var aPicture: TPicture): boolean;
var tmpStrm: TMemoryStream;
tmpStr: Ansistring;
begin// В aStr может быть '0;AASD47474', '0;', поэтому
tmpLen:= Length(aStr);
tmpStr:= aStr;
if ((tmpLen>2) and (tmpStr[1] = '0') and (tmpStr[2] = ';')) then
tmpStr:= Copy(zStr, 3, tmpLen-2);
result:= false;
tmpStrm:= TMemoryStream.Create;
try
tmpStrm.WriteBuffer(tmpStr, Length(tmpStr));
tmpStrm.Position:= 0;
aPicture.Bitmap.LoadFromStream(tmpStrm);// здесь вылетает с Stream read errorfinally
tmpStrm.Free;
end;
result:= true;
end;
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>>Подскажите, пожалуйста, где ошибка:
А>>
А>>function LoadPicture(aStr: Ansistring; var aPicture: TPicture): boolean;
А>> var tmpStrm: TMemoryStream;
А>> tmpStr: Ansistring;
А>>begin
А>> // В aStr может быть '0;AASD47474', '0;', поэтому
А>> tmpLen:= Length(aStr);
А>> tmpStr:= aStr;
А>> if ((tmpLen>2) and (tmpStr[1] = '0') and (tmpStr[2] = ';')) then
А>> tmpStr:= Copy(zStr, 3, tmpLen-2);
А>> result:= false;
А>> tmpStrm:= TMemoryStream.Create;
А>> try
А>> tmpStrm.WriteBuffer(tmpStr, Length(tmpStr));
А>> tmpStrm.Position:= 0;
А>> aPicture.Bitmap.LoadFromStream(tmpStrm);// здесь вылетает с Stream read error
А>> finally
А>> tmpStrm.Free;
А>> end;
А>> result:= true;
А>>end;
А>>
А>Ну епитить... х-ли писать в памяьб tmpStr = 'AABSDSFSFs'; и потом пробовать читать как картинку...
p,s, и ваще какого х-я tmpStrm передается как var параметр причем тут же порится ( теряя старый ), хотбы проаверку если не нил тогда зафриить старый , а то сразу Create без вопросов. И потом все равно Free,
нах..я ? чтобы память про-ть ?
Здравствуйте, <Аноним>, Вы писали:
А>Подскажите, пожалуйста, где ошибка:
Полный бред. Ты, собственно, чего ожидал при попытке записать в поток всякий мусор? Подсказка: tmpStr — это указатель на область памяти, в которой лежат символы строки. Ты пишешь в поток значение этого указателя, и то, что по прихоти компилятора легло с ним рядом.
Совет: опиши всю задачу. Что ты и куда пишешь, и что тебе потом надо считать. Даже будучи починенным, приведенный код суть прямой массаж эрогенных зон неподходящим предметом.
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.