Форум: "Основная";
Текущий архив: 2004.03.14;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c