C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[68569] ImageEn 델파이 샘플소스를 C빌더로 변경하려는데요...
책방전설 [] 1870 읽음    2012-11-19 15:44
1주일째 삽질하다가 도움을 요청하고자 글을 올려봅니다...

제가 ImageEn에서 제공하는 델파이 샘플소스중에서 IPCamera 영상을 보는데

이 샘플소스가 델파이로 되어있어서 C빌더로 변경하려는데 잘 안되네요...

고수님들 작은거라도 좀 알려주심 감사하겠습니다 ㅠ_ㅠ

* 아래는 델파이 샘플소스입니다.

unit umain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, ieview, imageenview, ExtCtrls, imageenio;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    ImageEnView1: TImageEnView;
    Label2: TLabel;
    EditIP: TEdit;
    EditAddress: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    EditUser: TEdit;
    Label5: TLabel;
    EditPassword: TEdit;
    ButtonConnect: TSpeedButton;
    procedure ButtonConnectClick(Sender: TObject);
  private
    { Private declarations }
    FAborting:boolean;
  public
    { Public declarations }
  end;

TIEJpegAcquireStream = class(TStream)
private
  fData:TMemoryStream;
  fStart:boolean;
public
  constructor Create;
  destructor Destroy; override;
  function Write(const Buffer; Count: Longint): Longint; override;
  function Read(var Buffer; Count: Longint): Longint; override;
  function Seek(Offset: Longint; Origin: Word): Longint; override;
end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TIEJpegAcquireStream.Create;
begin
  inherited;
  fData:=TMemoryStream.Create;
  fStart:=false;
end;

destructor TIEJpegAcquireStream.Destroy;
begin
  fData.Free;
  inherited;
end;

function TIEJpegAcquireStream.Write(const Buffer; Count: Longint): Longint;
var
  buf:pbytearray;
  i:integer;
begin
  result:=Count;
  buf:=pbytearray(@Buffer);
  case fStart of
    false:
      // look for begin of jpeg (FFD8)
      for i:=0 to Count-2 do
        if (buf[i]=$FF) and (buf[i+1]=$D8) then
        begin
          fData.Write( buf[i], Count-i);
          fStart:=true;
          exit;
        end;
    true:
      begin
        // look for end of jpeg (FFD9)
        for i:=0 to Count-2 do
          if (buf[i]=$FF) and (buf[i+1]=$D9) then
          begin
            fData.Write( buf[0], i);
            fStart:=false;

            // acquire bitmap
            fData.Position:=0;
            Form1.ImageEnView1.IO.LoadFromStreamJpeg(fData);
            Application.ProcessMessages;
            fData.Clear;

            exit;
          end;
        // not found, write all
        fData.Write( buf[0], Count );
      end;
  end;
end;

function TIEJpegAcquireStream.Seek(Offset: Longint; Origin: Word): Longint;
begin
  result:=fData.Seek(Offset,Origin);
end;

function TIEJpegAcquireStream.Read(var Buffer; Count: Longint): Longint;
begin
  raise Exception.Create('TIEJpegAcquireStream cannot read.');
end;

// connect switch
procedure TForm1.ButtonConnectClick(Sender: TObject);
var
  stream:TIEJpegAcquireStream;
  fileext:string;
begin
  if ButtonConnect.Down then
  begin
    stream:=TIEJpegAcquireStream.Create;
    FAborting:=false;
    IEGetFromURL('http://'+EditUser.Text+':'+EditPassword.Text+'@'+EditIP.Text+EditAddress.Text,stream,'', '','', nil,nil,@FAborting,fileext);
    stream.Free;
  end
  else
    FAborting:=true;
end;



end.

+ -

관련 글 리스트
68569 ImageEn 델파이 샘플소스를 C빌더로 변경하려는데요... 책방전설 1870 2012/11/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.