Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  22:15[Войти] | [Зарегистрироваться]
Ответ на вопрос № 43316

Вопросы с аналогичными сообщениями об ошибках:
  • Invalid Type Cast (11)

    19-06-2006 01:31
    Добрый день.
    Пытаюсь загрузить из blob поля jpg в Image1.
    На королевстве нашел следующие пути решения:
    1)


          if Fields[0].IsBlob then
          begin
            bs := TBlobStream.Create(TBlobField(Fields[0]),bmRead);
            Image1.Picture.Graphic.LoadFromStream(bs);
            bs.Free;
          end ;


    - здесь в строке, где bs создается, вываливается с ошибкой invalid typecast. Не знаю, как исправить :(.

    2)


      Stream := TMemoryStream.Create;
      try
        TBlobField(Fields[0]).SaveToStream(Stream);
        Image1.Picture.Graphic := nil;
        NewGraphic := TJPEGImage.Create;
        NewGraphic.LoadFromStream(Stream);
        Image1.Picture.Graphic := NewGraphic;
      finally
        Stream.Free
      end


    здесь вообще непонятно в какой строке - после выхода из процедуры, вываливается ошибка JPEG Error #42. :(

    Подскажите, как решить эту простую задачу.
    Спасибо.

    [+] Добавить в избранные вопросы

    Отслеживать ответы на этот вопрос по RSS

    Ответы:


    Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
    Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

    02-11-2006 00:40 | Сообщение от автора вопроса
    Фух... получил почту, а там стока сообщений %)...
    Я аж испугался...

    У меня отлично работает сейчас - если что, смотрите начало топика.

    01-11-2006 22:19
    ок попробую... спасибо

    01-11-2006 07:09
    Переделаешь методы 

    procedure UpdateData(Sender: TObject);
    procedure LoadPicture;



    примерно так:

    procedure TAPDBImage.LoadPicture;
    begin
      with FDataLink, Field, Picture do
      if not FPictureLoaded and (not Assigned(Field) or IsBlob) then
        if (Field = nil) or (TBlobField(Field).BlobSize = 0) then Graphic := nil
        else
        begin
          Graphic := FindGraphicClass.Create;
          Graphic.Assign(FDataLink.Field)
        end
    end;

    procedure TAPDBImage.UpdateData(Sender: TObject);
      var bs: TStream;
          Jpg: TJpegImage;
          Bmp: TBitmap;
    begin
      with Picture, FDataLink do
      begin
        bs := DataSet.CreateBlobStream(TBlobField(FDataLink.Field), bmWrite);
        try
          Graphic.SaveToStream(bs)
        finally
          bs.Free
        end
      end
    end;



    Функция FindGraphicClass должна возвращать TGraphicClass (откуда она его будет брать - решай сам или из поля в базе или ты будешь сам парсить BLOB)

    01-11-2006 07:00
    Но для загрузки файла в DBImage, все равно придется выбирать метод для каждого формата свой  ?

    01-11-2006 06:49
    А как собираешься различать форматы? Создай поле, которое будет содержать формат файла - так удобнее всего. Не придется парсить заголовки.

    01-11-2006 06:31
    Просто я не знаю , какого формата будут данные в этих полях они могут быть не только в png, но  и .gif , .jpeg, .bmp, .tiff и.т.д.  то есть разных форматов изображения...


    01-11-2006 06:09
    Стоп, ну, конечно, возможно, TAPDBImage умеет читать только jpg-формат с базы, и все форматы на вход. Можете поменять методы LoadPicture, UpdateData для работы с PNG, дело в том, что сам по себе поток не хранит в себе инфы о своем формате (вернее парсить влом заголовки).

    01-11-2006 06:00
    1)Пробовал подключать напрямую чере DataSourse и DataField

    2) Затем пробывал через TMemoryStream
    -----------------------------
    ...
      Stream := TMemoryStream.Create;
      try
        TBlobField(dsPhoto.Fields[1]).SaveToStream(Stream);
        APDBImage.Picture.Graphic := nil;
        APDBImage.Picture.Graphic.LoadfromStream(Stream);
      finally
        Stream.Free
      end
    ...
    3)Пробывал через TADoBlobStream
    BS:= TADOBlobStream.Create (dsPhoto.Fields('Photo') as TBlobField, bmRead);
    BS.Seek(82, soFromBeginning);
    APDBImage.Picture.Graphic.LoadfromStream(Stream);


    Может ли это быть из-за того что  у меня картинки в базе записывались в .Png формате? Вы что посоветуете?



    01-11-2006 05:32
    Покажите код. Как Вы использовали мой компонент?

    01-11-2006 04:51
    Пробовал использовать ваш компонент , но все равно возникает ошибка общаения к памяти

    01-11-2006 03:49 | Комментарий к предыдущим ответам
    См. ответ 19-06-2006 05:47

    01-11-2006 03:32 | Вопрос к автору: запрос дополнительной информации
    Слушай у тебя получилось ? А то я столкнулся с такой же проблемой,

    Если можешь скинь исходники сюда...

    19-06-2006 08:50 | Комментарий к предыдущим ответам
    2Игорь

    Или Вы станете утверждать, что разработчики сторонних контролов, заменяющих стандартные, для расширения их функциональности, но не наследую оных - то же не знают ООП? Да, так вышло, что изменение какжется небольшим - но довольно глубоким - я не виноват, что нужные для перекрытия методы не были сделаны виртуальными в TDBImage.

    19-06-2006 08:46 | Комментарий к предыдущим ответам
    Объясняю, если возьмете код исходного TDBImage и сравните его с этим - увидите такую маленькую деталь - перекрыты статические (иногда еще и private) методы. Т.е. наследование - отпадает, агрегация тем более неприменима, потому что контрол дергается через DataLink и его поведение обусловлено именно теми статическими вызовами, которые я переписал для работы с JPG форматом. Это не развитие компонента TDBImage, это его другая версия. И, пожалуйста, впредь не следует что-то критиковать до конца не разобравшись - а почему оно так, а не иначе.

    19-06-2006 08:31 | Комментарий к предыдущим ответам
    To Banderas
    Я считаю, что простое копирование исходного кода класса TDBImage, объявленного в модуле DBCtrls, в свой класс - это не ООП. Хотите расширить функциональность класса - используйте наследование или агрегацию.

    19-06-2006 07:51 | Комментарий к предыдущим ответам
    2Игорь

    Я на вашем месте пошел бы заново ООП изучать, а не выкладывал бы на всеобщее обозрение такие сомнительные "модификации", которые только вводят в заблуждение начинающих программистов и вырабатывают у них дурной подход в написании программ.


    Можно по-подробнее насчет моих недостатков в знании ООП? И насчет сомнительности модификаций? Обоснуйте, если Вас не затруднит :) Вашу критику.

    19-06-2006 07:44
    >>>To Banderas
    Я на вашем месте пошел бы заново ООП изучать, а не выкладывал бы на всеобщее обозрение такие сомнительные "модификации", которые только вводят в заблуждение начинающих программистов и вырабатывают у них дурной подход в написании программ.

    19-06-2006 05:47
    Вот когда-то баловался картинками в базе - в результате модифицировал TDBImage. Привожу код модуля:


    unit APDBImage;

    {$WARN UNSAFE_CAST OFF}

    interface

    uses
      Windows, Messages, SysUtils, Classes, Controls, Graphics, Forms, DB,
      DBCtrls;

    type
    TAPDBImage = class(TCustomControl)
      private
        FDataLink: TFieldDataLink;
        FPicture: TPicture;
        FBorderStyle: TBorderStyle;
        FAutoDisplay: Boolean;
        FStretch: Boolean;
        FCenter: Boolean;
        FPictureLoaded: Boolean;
        FQuickDraw: Boolean;
        procedure DataChange(Sender: TObject);
        function GetDataField: string;
        function GetDataSource: TDataSource;
        function GetField: TField;
        function GetReadOnly: Boolean;
        procedure PictureChanged(Sender: TObject);
        procedure SetAutoDisplay(Value: Boolean);
        procedure SetBorderStyle(Value: TBorderStyle);
        procedure SetCenter(Value: Boolean);
        procedure SetDataField(const Value: string);
        procedure SetDataSource(Value: TDataSource);
        procedure SetPicture(Value: TPicture);
        procedure SetReadOnly(Value: Boolean);
        procedure SetStretch(Value: Boolean);
        procedure UpdateData(Sender: TObject);
        procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
        procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
        procedure CMExit(var Message: TCMExit); message CM_EXIT;
        procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
        procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
        procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
        procedure WMCut(var Message: TMessage); message WM_CUT;
        procedure WMCopy(var Message: TMessage); message WM_COPY;
        procedure WMPaste(var Message: TMessage); message WM_PASTE;
        procedure WMSize(var Message: TMessage); message WM_SIZE;
      protected
        procedure CreateParams(var Params: TCreateParams); override;
        function GetPalette: HPALETTE; override;
        procedure KeyDown(var Key: Word; Shift: TShiftState); override;
        procedure KeyPress(var Key: Char); override;
        procedure Notification(AComponent: TComponent;
          Operation: TOperation); override;
        procedure Paint; override;
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
        procedure CopyToClipboard;
        procedure CutToClipboard;
        function ExecuteAction(Action: TBasicAction): Boolean; override;
        procedure LoadPicture;
        procedure PasteFromClipboard;
        function UpdateAction(Action: TBasicAction): Boolean; override;
        property Field: TField read GetField;
        property Picture: TPicture read FPicture write SetPicture;
      published
        property Align;
        property Anchors;
        property AutoDisplay: Boolean read FAutoDisplay write SetAutoDisplay default True;
        property BorderStyle: TBorderStyle read FBorderStyle write SetBorderStyle default bsSingle;
        property Center: Boolean read FCenter write SetCenter default True;
        property Color;
        property Constraints;
        property Ctl3D;
        property DataField: string read GetDataField write SetDataField;
        property DataSource: TDataSource read GetDataSource write SetDataSource;
        property DragCursor;
        property DragKind;
        property DragMode;
        property Enabled;
        property Font;
        property ParentColor default False;
        property ParentCtl3D;
        property ParentFont;
        property ParentShowHint;
        property PopupMenu;
        property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False;
        property QuickDraw: Boolean read FQuickDraw write FQuickDraw default True;
        property ShowHint;
        property Stretch: Boolean read FStretch write SetStretch default False;
        property TabOrder;
        property TabStop default True;
        property Visible;
        property OnClick;
        property OnContextPopup;
        property OnDblClick;
        property OnDragDrop;
        property OnDragOver;
        property OnEndDock;
        property OnEndDrag;
        property OnEnter;
        property OnExit;
        property OnKeyDown;
        property OnKeyPress;
        property OnKeyUp;
        property OnMouseDown;
        property OnMouseMove;
        property OnMouseUp;
        property OnStartDock;
        property OnStartDrag;
      end;

    procedure Register;

    implementation

    uses
      Clipbrd, jpeg;
     
    { TDBImage }

    constructor TAPDBImage.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      ControlStyle := ControlStyle + [csOpaque, csReplicatable];
      if not NewStyleControls then ControlStyle := ControlStyle + [csFramed];
      Width := 105;
      Height := 105;
      TabStop := True;
      ParentColor := False;
      FPicture := TPicture.Create;
      FPicture.OnChange := PictureChanged;
      FBorderStyle := bsSingle;
      FAutoDisplay := True;
      FCenter := True;
      FDataLink := TFieldDataLink.Create;
      FDataLink.Control := Self;
      FDataLink.OnDataChange := DataChange;
      FDataLink.OnUpdateData := UpdateData;
      FQuickDraw := True;
    end;

    destructor TAPDBImage.Destroy;
    begin
      FPicture.Free;
      FDataLink.Free;
      FDataLink := nil;
      inherited Destroy;
    end;

    function TAPDBImage.GetDataSource: TDataSource;
    begin
      Result := FDataLink.DataSource;
    end;

    procedure TAPDBImage.SetDataSource(Value: TDataSource);
    begin
      if not (FDataLink.DataSourceFixed and (csLoading in ComponentState)) then
        FDataLink.DataSource := Value;
      if Value <> nil then Value.FreeNotification(Self);
    end;

    function TAPDBImage.GetDataField: string;
    begin
      Result := FDataLink.FieldName;
    end;

    procedure TAPDBImage.SetDataField(const Value: string);
    begin
      FDataLink.FieldName := Value;
    end;

    function TAPDBImage.GetReadOnly: Boolean;
    begin
      Result := FDataLink.ReadOnly;
    end;

    procedure TAPDBImage.SetReadOnly(Value: Boolean);
    begin
      FDataLink.ReadOnly := Value;
    end;

    function TAPDBImage.GetField: TField;
    begin
      Result := FDataLink.Field;
    end;

    function TAPDBImage.GetPalette: HPALETTE;
    begin
      Result := 0;
      if FPicture.Graphic is TBitmap then
        Result := TBitmap(FPicture.Graphic).Palette;
    end;

    procedure TAPDBImage.SetAutoDisplay(Value: Boolean);
    begin
      if FAutoDisplay <> Value then
      begin
        FAutoDisplay := Value;
        if Value then LoadPicture;
      end;
    end;

    procedure TAPDBImage.SetBorderStyle(Value: TBorderStyle);
    begin
      if FBorderStyle <> Value then
      begin
        FBorderStyle := Value;
        RecreateWnd;
      end;
    end;

    procedure TAPDBImage.SetCenter(Value: Boolean);
    begin
      if FCenter <> Value then
      begin
        FCenter := Value;
        Invalidate;
      end;
    end;

    procedure TAPDBImage.SetPicture(Value: TPicture);
    begin
      FPicture.Assign(Value);
    end;

    procedure TAPDBImage.SetStretch(Value: Boolean);
    begin
      if FStretch <> Value then
      begin
        FStretch := Value;
        Invalidate;
      end;
    end;

    procedure TAPDBImage.Paint;
    var
      Size: TSize;
      R: TRect;
      S: string;
      DrawPict: TPicture;
      Form: TCustomForm;
      Pal: HPalette;
    begin
      with Canvas do
      begin
        Brush.Style := bsSolid;
        Brush.Color := Color;
        if FPictureLoaded or (csPaintCopy in ControlState) then
        begin
          DrawPict := TPicture.Create;
          Pal := 0;
          try
            if (csPaintCopy in ControlState) and
              Assigned(FDataLink.Field) and FDataLink.Field.IsBlob then
            begin
              DrawPict.Assign(FDataLink.Field);
              if DrawPict.Graphic is TBitmap then
                DrawPict.Bitmap.IgnorePalette := QuickDraw
            end
            else
            begin
              DrawPict.Assign(Picture);
              if Focused and (DrawPict.Graphic <> nil) and (DrawPict.Graphic.Palette <> 0) then
              begin { Control has focus, so realize the bitmap palette in foreground }
                Pal := SelectPalette(Handle, DrawPict.Graphic.Palette, False);
                RealizePalette(Handle);
              end;
            end;
            if Stretch then
              if (DrawPict.Graphic = nil) or DrawPict.Graphic.Empty then
                FillRect(ClientRect)
              else
                StretchDraw(ClientRect, DrawPict.Graphic)
            else
            begin
              SetRect(R, 0, 0, DrawPict.Width, DrawPict.Height);
              if Center then OffsetRect(R, (ClientWidth - DrawPict.Width) div 2,
                (ClientHeight - DrawPict.Height) div 2);
              StretchDraw(R, DrawPict.Graphic);
              ExcludeClipRect(Handle, R.Left, R.Top, R.Right, R.Bottom);
              FillRect(ClientRect);
              SelectClipRgn(Handle, 0);
            end;
          finally
            if Pal <> 0 then SelectPalette(Handle, Pal, True);
            DrawPict.Free;
          end;
        end
        else begin
          Font := Self.Font;
          if FDataLink.Field <> nil then
            S := FDataLink.Field.DisplayLabel
          else S := Name;
          S := '(' + S + ')';
          Size := TextExtent(S);
          R := ClientRect;
          TextRect(R, (R.Right - Size.cx) div 2, (R.Bottom - Size.cy) div 2, S);
        end;
        Form := GetParentForm(Self);
        if (Form <> nil) and (Form.ActiveControl = Self) and
          not (csDesigning in ComponentState) and
          not (csPaintCopy in ControlState) then
        begin
          Brush.Color := clWindowFrame;
          FrameRect(ClientRect);
        end;
      end;
    end;

    procedure TAPDBImage.PictureChanged(Sender: TObject);
    begin
      if FPictureLoaded then FDataLink.Modified;
      FPictureLoaded := True;
      Invalidate;
    end;

    procedure TAPDBImage.Notification(AComponent: TComponent;
      Operation: TOperation);
    begin
      inherited Notification(AComponent, Operation);
      if (Operation = opRemove) and (FDataLink <> nil) and
        (AComponent = DataSource) then DataSource := nil;
    end;

    procedure TAPDBImage.LoadPicture;
    begin
      with FDataLink, Field, Picture do
      if not FPictureLoaded and (not Assigned(Field) or IsBlob) then
        if (Field = nil) or (TBlobField(Field).BlobSize = 0) then Graphic := nil
        else
        begin
          Graphic := TJpegImage.Create;
          Graphic.Assign(FDataLink.Field)
        end
    end;

    procedure TAPDBImage.DataChange(Sender: TObject);
    begin
      Picture.Graphic := nil;
      FPictureLoaded := False;
      if FAutoDisplay then LoadPicture;
    end;

    procedure TAPDBImage.UpdateData(Sender: TObject);
      var bs: TStream;
          Jpg: TJpegImage;
          Bmp: TBitmap;
    begin
      with Picture, FDataLink do
      begin
        bs := DataSet.CreateBlobStream(TBlobField(FDataLink.Field), bmWrite);
        try
          if Graphic is TJpegImage then Graphic.SaveToStream(bs)
          else
          begin
            Jpg := TJpegImage.Create;
            with Jpg do
              try
              CompressionQuality := 100;
              PixelFormat := jf24bit;
              if Graphic is TBitmap then Assign(Graphic)
              else
                begin
                  Bmp := TBitmap.Create;
                  try
                  Bmp.Width := Graphic.Width;
                  Bmp.Height := Graphic.Height;
                  Bmp.Canvas.Draw(0, 0, Graphic);
                  Assign(Bmp)
                  finally
                  Bmp.Free
                  end
                end;
              JPEGNeeded;
              SaveToStream(bs);
              finally
              Free
              end
          end
        finally
          bs.Free
        end
      end
    end;

    procedure TAPDBImage.CopyToClipboard;
    begin
      if Picture.Graphic <> nil then Clipboard.Assign(Picture);
    end;

    procedure TAPDBImage.CutToClipboard;
    begin
      if Picture.Graphic <> nil then
        if FDataLink.Edit then
        begin
          CopyToClipboard;
          Picture.Graphic := nil;
        end;
    end;

    procedure TAPDBImage.PasteFromClipboard;
    begin
      if FDataLink.Edit then
      Picture.Assign(Clipboard);
    end;

    procedure TAPDBImage.CreateParams(var Params: TCreateParams);
    begin
      inherited CreateParams(Params);
      with Params do
      begin
        if FBorderStyle = bsSingle then
          if NewStyleControls and Ctl3D then
            ExStyle := ExStyle or WS_EX_CLIENTEDGE
          else
            Style := Style or WS_BORDER;
        WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW);
      end;
    end;

    procedure TAPDBImage.KeyDown(var Key: Word; Shift: TShiftState);
    begin
      inherited KeyDown(Key, Shift);
      case Key of
        VK_INSERT:
          if ssShift in Shift then PasteFromClipBoard else
            if ssCtrl in Shift then CopyToClipBoard;
        VK_DELETE:
          if ssShift in Shift then CutToClipBoard;
      end;
    end;

    procedure TAPDBImage.KeyPress(var Key: Char);
    begin
      inherited KeyPress(Key);
      case Key of
        ^X: CutToClipBoard;
        ^C: CopyToClipBoard;
        ^V: PasteFromClipBoard;
        #13: LoadPicture;
        #27: FDataLink.Reset;
      end;
    end;

    procedure TAPDBImage.CMGetDataLink(var Message: TMessage);
    begin
      Message.Result := Integer(FDataLink)
    end;

    procedure TAPDBImage.CMEnter(var Message: TCMEnter);
    begin
      Invalidate; { Draw the focus marker }
      inherited;
    end;

    procedure TAPDBImage.CMExit(var Message: TCMExit);
    begin
      try
        if Assigned(DataSource) and Assigned(DataSource.DataSet) and
          (DataSource.DataSet.State in [dsInsert, dsEdit]) then
          FDataLink.UpdateRecord;
      except
        SetFocus;
        raise;
      end;
      Invalidate; { Erase the focus marker }
      inherited;
    end;

    procedure TAPDBImage.CMTextChanged(var Message: TMessage);
    begin
      inherited;
      if not FPictureLoaded then Invalidate;
    end;

    procedure TAPDBImage.WMLButtonDown(var Message: TWMLButtonDown);
    begin
      if TabStop and CanFocus then SetFocus;
      inherited;
    end;

    procedure TAPDBImage.WMLButtonDblClk(var Message: TWMLButtonDblClk);
    begin
      LoadPicture;
      inherited;
    end;

    procedure TAPDBImage.WMCut(var Message: TMessage);
    begin
      CutToClipboard;
    end;

    procedure TAPDBImage.WMCopy(var Message: TMessage);
    begin
      CopyToClipboard;
    end;

    procedure TAPDBImage.WMPaste(var Message: TMessage);
    begin
      PasteFromClipboard;
    end;

    procedure TAPDBImage.WMSize(var Message: TMessage);
    begin
      inherited;
      Invalidate;
    end;

    function TAPDBImage.ExecuteAction(Action: TBasicAction): Boolean;
    begin
      Result := inherited ExecuteAction(Action) or (FDataLink <> nil) and
        FDataLink.ExecuteAction(Action);
    end;

    function TAPDBImage.UpdateAction(Action: TBasicAction): Boolean;
    begin
      Result := inherited UpdateAction(Action) or (FDataLink <> nil) and
        FDataLink.UpdateAction(Action);
    end;

    procedure Register;
    begin
      RegisterComponents('AP Corp', [TAPDBImage]);
    end;

    end.


    19-06-2006 04:23 | Сообщение от автора вопроса
    2tiv...
    попробовал ваш вариант!!!
    спасибо, ожила! :) :) :)

    19-06-2006 04:18 | Сообщение от автора вопроса
    ну прикиньте! пришлось делать вот так: :( :( :(


        TBlobField(Fields[0]).SaveToFile(ExtractFileDir(ParamStr(0))+'\temp.jpg');
        Image1.Picture.Graphic:=nil;
        Image1.Picture.Graphic := TJPEGImage.Create;
        Image1.Picture.Graphic.LoadFromFile(ExtractFileDir(ParamStr(0))+'\temp.jpg');


    (мне надо, чтобы в jpg было в blob, потому что из нее еще и сохранять будут и еще ее по почте собираются пересылать периодически)

    19-06-2006 03:24
    попробуй перед загрузкой картинки из потока поставить Stream.Position := 0;
     tiv

    19-06-2006 03:05
    У меня тоже ничего не вышло с BlobStream. Сделал "в тупую" - преобразовал в bitmap и потом assing:

    uses jpeg;
    ...
    var
      Jpg: TJPEGImage;
      Pic: TBitmap;
    ...
                Jpg := TJPEGImage.Create;
                Pic := TBitmap.Create;
                try
                  Jpg.LoadFromFile(FileName);
                  Pic.Assign(Jpg);
                  FPic.Assign(Pic); // FPic - blob поле с картинкой
                finally
                  Jpg.Free;
                  Pic.Free;
                end;
              end;


    Обратное преобразование в jpeg для отображения в TImage не нужно, т.к. сохраняется bitmap. Просто assign

    Добавьте свое cообщение

    Вашe имя:  [Войти]
    Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
    контрольный вопрос:
    Жили у бабуси два веселых гуся. Один белый, другой КАКОЙ?
    в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
    Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
    Тип сообщения:
    Текст:
    Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Вопросы с аналогичными сообщениями об ошибках:
  • Invalid Type Cast (11)


    Страница избранных вопросов Круглого стола.
  •   
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования