Форум: "Основная";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
ВнизImage Найти похожие ветки
← →
Lina (2003-08-21 08:58) [0]Уважаемые мастера! Как в Image загрузить изображение из потока
← →
Skier (2003-08-21 08:59) [1]Image.Picture.Bitmap.LoadFromStream(...)
← →
Lina (2003-08-21 09:10) [2]Я получаю ошибку: "Canvas does not allow drawing"
← →
Skier (2003-08-21 09:12) [3]>Lina (21.08.03 09:10) [2]
Код покажи.
← →
Lina (2003-08-21 09:14) [4]В начале получаю поток на NMStrmServ1:
procedure TForm3.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
strm: TStream);
var
FotoUser:TForm_Foto;
begin
MyFStream := TFileStream.Create(".\"+sfrom+".bmp", fmCreate);
MyFStream.CopyFrom(strm, strm.size);
sleep(3000);
FotoUser:=TForm_Foto.Create(Application);
FotoUser.Show;
end;
а потом
при открытии 2 формы:
Image1.Picture.Bitmap.LoadFromStream(form3.MyFStream);
← →
MBo (2003-08-21 09:20) [5]MyFStream.Position:=0;
← →
Skier (2003-08-21 09:21) [6]1) Вот рабочий код :
var
AStream : TMemoryStream;
begin
AStream := TMemoryStream.Create;
try
AStream.LoadFromFile("c:\000\abort.bmp");
Image1.Picture.Bitmap.LoadFromStream(AStream);
finally
AStream.Free;
end; //try
end;
2) Может быть у тебя получаются неверные данные в MyFStream ?
Проверь...
← →
Lina (2003-08-21 09:26) [7]Пишет,что файла такого нет. А когда делаешь обновление директории, то файл появляется. Что делать, уже все попробывала
← →
Skier (2003-08-21 09:28) [8]Очень похоже что сей путь ".\"+sfrom+".bmp" неверный...
← →
Lina (2003-08-21 09:37) [9]Давайте объясню подробнее. При нажатии на кнопку происходит передача файла (изображение) моей программе из сети. При этом я хочу показать этот файл на 2-й форме. Но при открытии этой формы выползает ошибка, что файла по такой директории нет. Но когда я обновляю директорию файл там появляется
← →
Palladin (2003-08-21 09:58) [10]
> Lina (21.08.03 09:37) [9]
Логика, подсказывает мне, что нужно таки подождать при открытии формы2 до того как файл появится, и после уже открываться.
Или ты пути перепутал(а).
← →
sniknik (2003-08-21 10:30) [11]Lina (21.08.03 09:37) [9]
> происходит передача файла (изображение) моей программе из сети
как происходит? махаеш черенком волшебной лопаты и имадж переносится? ;о)) или всетаки пользуешся чемто компонентами какими?
просто после передачи компоненты вполне могут освобождать поток, и второй раз к нему уже не обратишся. вот к примеру код вызываемый в Indy после WriteContent (правда этопосылка
потока, но в приеме может быть аналогично)
procedure TIdHTTPResponseInfo.ReleaseContentStream;
begin
if FreeContentStream then begin
FreeAndNil(FContentStream);
end else begin
FContentStream := nil;
end;
end;
(FreeContentStream по дефаулту true)
← →
Zelius (2003-08-21 11:26) [12]попробуй закрыть поток:
MyFStream := TFileStream.Create(".\"+sfrom+".bmp", fmCreate);
MyFStream.CopyFrom(strm, strm.size);
MyFStream.Free;
что бы файл создался и записался, может поэтому его еще нет на диске.
← →
Lina (2003-08-21 13:25) [13]
> sniknik ©
махаеш черенком волшебной лопаты
procedure TForm3.NMStrmServ1MSG Выше надо было смотреть
NMStrmServ1 - вот мой черенок
← →
sniknik (2003-08-21 13:47) [14]видел.
у меня переменные еще забавнее называются, что с того? (гадать влом, привела бы исходный тип/класс, другое дело)
← →
Zelius (2003-08-21 14:13) [15]попробуй так сделать:
Bitmap := TBitmap.Create;
try
MyFStream.Position:=0;
Bitmap.LoadFromStream(MyFStream);
Image1.Picture.Graphic := Bitmap;
finally
Bitmap.Free;
end;
у меня так с JPeg работает.
← →
Lina (2003-08-21 14:20) [16]Спасибо большое - у меня тоже :))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c