Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Invalid class typecast


DelphiNew ©   (2005-06-21 15:44:00) 

Есть вот такая процедура:

var
BlobStream: TBlobStream;
StrStream: TStringStream;
s: string;
begin

BlobStream:=TBlobStream.Create(IBQFndProc.fieldByname('OBJ_BODY')
 as TBlobField, bmRead);
StrStream := TStringStream.Create(s);
try
 ObjectBinaryToText(BlobStream, StrStream);
 s:=StrStream.DataString;
finally
 StrStream.Free;
 BlobStream.Free;
end;

FormProc:= TFormProc.Create(self);
FormProc.Memo1.lines.text:= s;
FormProc.Show;
end;
При попытке выполнения строчки BlobStream:=TBlobStream.Create(IBQFndProc.fieldByname('OBJ_BODY')as TBlobField, bmRead); вылетает ошибка Invalid class typecast. В чём может быть причина?


DelphiNew   (2005-06-21 15:57:00) [1]

Спасибо попробую


Ega23   (2005-06-21 15:53:00) [2]


procedure TCustomGfxDBConnector.AddGfxObject;
var
ms:TMemoryStream;
GfxTag:TGfxTagStruct;
GfxPoly:TGFXPolyObject;
begin
ms:=TMemoryStream.Create;
try
 if TBLOBField(FDataLink.DataSet.FieldByName(DataField)).IsNull then Exit;
 //DataSource.DataSet.FieldByName(DataField).

 TBLOBField(FDataLink.DataSet.FieldByName(DataField)).SaveToStream(ms);

 ms.Position:=0;
 ms.ReadBuffer(GfxTag, SizeOf(TGfxTagStruct));

 ms.Position:=GfxTag.Offset;
 if GfxTag.Tag<>GFXTAG_TYPE then Exit;
 Case GfxTag.wParam of
  POLY_OBJECT          : begin
                          GfxPoly:=TGFXPolyObject.Create;
                          GfxPoly.LoadFromStream(ms);
                          GfxPoly.UID:=FDataLink.DataSet.FieldByName(IDField).AsInteger;
                          FGFXDrawer.AddObject(GfxPoly);
                         end;
  RASTER_OBJECT        : begin
                          //
                         end;

 end;

finally
 ms.Free;
end;

end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо