Help. Пробелмы с TMemoryStream
От: Аноним  
Дата: 01.03.04 13:34
Оценка:
Подскажите, пожалуйста, где ошибка:

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;
Re: Help. Пробелмы с TMemoryStream
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.03.04 13:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А> tmpStrm.WriteBuffer(tmpStr, Length(tmpStr));

tmpStrm.WriteBuffer(tmpStr[1], Length(tmpStr));
и солнце б утром не вставало, когда бы не было меня
Re[2]: Help. Пробелмы с TMemoryStream
От: Аноним  
Дата: 01.03.04 13:43
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Аноним, Вы писали:


А>> tmpStrm.WriteBuffer(tmpStr, Length(tmpStr));

S>tmpStrm.WriteBuffer(tmpStr[1], Length(tmpStr));

Тоже самое.
Re: Help. Пробелмы с TMemoryStream
От: s.ts  
Дата: 01.03.04 14:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите, пожалуйста, где ошибка:


видимо, чтобы видеть почему ошибка при чтении нужно видеть то, как записывается
Re: Help. Пробелмы с TMemoryStream
От: Аноним  
Дата: 01.03.04 14:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите, пожалуйста, где ошибка:


А>
А>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'; и потом пробовать читать как картинку...
Re[2]: Help. Пробелмы с TMemoryStream
От: Аноним  
Дата: 01.03.04 14:30
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Подскажите, пожалуйста, где ошибка:


А>>
А>>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,
нах..я ? чтобы память про-ть ?
Re: Help. Пробелмы с TMemoryStream
От: Sinclair Россия https://github.com/evilguest/
Дата: 01.03.04 19:08
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Подскажите, пожалуйста, где ошибка:

Полный бред. Ты, собственно, чего ожидал при попытке записать в поток всякий мусор? Подсказка: tmpStr — это указатель на область памяти, в которой лежат символы строки. Ты пишешь в поток значение этого указателя, и то, что по прихоти компилятора легло с ним рядом.

Совет: опиши всю задачу. Что ты и куда пишешь, и что тебе потом надо считать. Даже будучи починенным, приведенный код суть прямой массаж эрогенных зон неподходящим предметом.
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.