Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

Help. Проблемы с TMemoryStream;   Найти похожие ветки 

 
siriusP   (2004-01-23 13:11) [0]

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

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;


 
icWasya ©   (2004-01-23 13:17) [1]

ну во первых

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

а во вторых,
AASD47474 - это что, прямо так и написано? это шестнадцатеричное представление? на каждый байт по два символа строки? или как?


 
Romkin ©   (2004-01-23 13:18) [2]

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


 
Digitman ©   (2004-01-23 13:18) [3]

чушь (никакого отношения к bmp-данным не имеющую) загружаешь в поток, ту же чушь и пытаешься оттуда считывать следом же
вот тебе и Stream read error


 
siriusP   (2004-01-23 13:20) [4]

Эта строка сжата по базе 64. Я сначала ее расжимаю, потом пытаюсь загрузить в картинку


 
Digitman ©   (2004-01-23 13:23) [5]


> Я сначала ее расжимаю


где ? "разжимаешь" ? покажи фрагмент кода соотв-щий ?


 
siriusP   (2004-01-23 13:28) [6]

Да какая разница, разжимает правильно. В Buildere работает, точно такой же код, в Delphi - нет.


 
Тимохов ©   (2004-01-23 13:30) [7]


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

И это не помогло?


 
Тимохов ©   (2004-01-23 13:31) [8]


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

И это не помогло?


 
Digitman ©   (2004-01-23 13:31) [9]


> siriusP (23.01.04 13:28) [6]


> Да какая разница


ну-ну


 
Digitman ©   (2004-01-23 13:36) [10]


> // В aStr может быть "0;AASD47474", "0;", поэтому


не знаю уж, что у тебя там "может быть", но в буфере строковой переменной, передаваемой тобой в кач-ве параметра, должны быть данные в формате bmp, "нули", "апострофы" и пр.


 
Digitman ©   (2004-01-23 13:41) [11]

ко всему прочему на ото есть класс TStringStream


 
WebErr ©   (2004-03-01 17:56) [12]


> siriusP (23.01.04 13:28) [6]
> Да какая разница, разжимает правильно. В Buildere работает,
> точно такой же код, в Delphi - нет.

В Builder"e String другой, там это вообще представлено как класс AnsiString. Естественно одинаковый код, без учёта различий в таком фундаментальном понятии как строка, не будет работать в Delphi так же как в Builder"e!!!



Страницы: 1 вся ветка

Текущий архив: 2004.03.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
7-43930
CC
2003-12-24 15:21
2004.03.14
сканирование рисунка


8-43686
UnDISCOvery
2003-11-06 15:15
2004.03.14
DirectSound. Как записать многоканальный звук ?


1-43674
Pul
2004-03-01 19:02
2004.03.14
кнопку приложения


3-43286
BUJHM
2004-02-12 15:36
2004.03.14
Перенос изменений в БД


9-43240
[Baradoo]
2003-01-14 21:54
2004.03.14
Огонь или как его реализовать в игре...