+ Ответить в теме
Показано с 1 по 5 из 5

Тема: Где глюк ?

  1. #1
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    По умолчанию Где глюк ?

    вот хочу написать прогу, которая будет отображать вебкамеру с РГА.ру:
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs,Wininet,Jpeg, ExtCtrls;

    type
    TForm1 = class(TForm)
    Timer: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);

    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    mempic:TMemoryStream;

    implementation

    {$R *.dfm}
    function DownloadURL(const aUrl: string): Boolean;
    var
    hSession: HINTERNET;
    hService: HINTERNET;
    lpBuffer: array[0..1024 + 1] of Char;
    dwBytesRead: DWORD;
    begin
    Result := False;
    // hSession := InternetOpen( 'MyApp', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
    hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
    try
    if Assigned(hSession) then
    begin
    hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0);
    if Assigned(hService) then
    try
    mempic.Clear;
    while True do
    begin
    dwBytesRead := 1024;
    InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
    if dwBytesRead = 0 then break;
    lpBuffer[dwBytesRead] := #0;
    mempic.Write(lpBuffer,dwBytesRead);
    end;
    mempic.Seek(0,0);
    Result := True;

    finally
    InternetCloseHandle(hService);
    end;
    end;
    finally
    InternetCloseHandle(hSession);
    end;
    end;



    procedure TForm1.TimerTimer(Sender: TObject);
    var jpg:TJPEGImage;
    bmp:TBitmap;
    begin
    if DownloadURL('http://rga.ru/webcam/video.tmp') then
    begin
    beep;
    bmp := TBitMap.Create;
    Jpg := TJpegImage.Create;
    Jpg.LoadFromStream(mempic);
    bmp.Assign(Jpg);
    Form1.Canvas.Draw(0,0,bmp);
    bmp.free;
    Jpg.free;
    end;
    end;


    procedure TForm1.FormCreate(Sender: TObject);
    begin
    mempic:=TMemoryStream.Create;
    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
    mempic.free;
    end;

    end.
    впринципе всё работает , но картинка не обновляется ! .... как профиксить ? я думаю трабла вся в функции DownloadURL (я её взял откудато ...)
    либо посоветуйте более понятную и нормальную функцию для закачки файлов ...

  2. #2
    Почти гений Mozart Набираю обороты Mozart Набираю обороты Mozart Набираю обороты Mozart Набираю обороты Mozart Набираю обороты Mozart Набираю обороты Аватар для Mozart
    Регистрация
    08.11.2004
    Сообщений
    1,811
    Поблагодарил(а)
    27
    Получено благодарностей: 388 (сообщений: 251).

    По умолчанию

    Цитата Сообщение от _jf_
    вот хочу написать прогу, которая будет отображать вебкамеру с РГА.ру:

    впринципе всё работает , но картинка не обновляется ! .... как профиксить ? я думаю трабла вся в функции DownloadURL (я её взял откудато ...)
    либо посоветуйте более понятную и нормальную функцию для закачки файлов ...
    Мля...имхо через php через сокеты проще сделать...

  3. #3
    Джедай nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь
    Регистрация
    22.01.2005
    Сообщений
    3,753
    Поблагодарил(а)
    419
    Получено благодарностей: 1,257 (сообщений: 528).

    По умолчанию

    хм...а пробовал юзать WebBrowser с вкладки Internet?
    а по коду..я сильно не смотрел, но что то там с потоком (stream) у тя было...не легче ли было получать этот поток через TClientSocket ...опять таки имхо ...детально код не разбирал

  4. #4
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    По умолчанию

    Цитата Сообщение от Mozart
    Мля...имхо через php через сокеты проще сделать...
    Нужна именно программа, так как у меня нету сервака с пхп (и предположительно у юзеров тоже не будет )

  5. #5
    Кандидат в умники JiF Включаюсь JiF Включаюсь JiF Включаюсь
    Регистрация
    20.05.2005
    Сообщений
    420
    Поблагодарил(а)
    0
    Получено благодарностей: 14 (сообщений: 9).

    По умолчанию

    Цитата Сообщение от [n0ns3ns3]
    хм...а пробовал юзать WebBrowser с вкладки Internet?
    а по коду..я сильно не смотрел, но что то там с потоком (stream) у тя было...не легче ли было получать этот поток через TClientSocket ...опять таки имхо ...детально код не разбирал
    Веб бразуер - это уже лишние ActiveX' ы и т.д.....
    в коде я не врубаюсь что за строчки
    hService := InternetOpenUrl(hSession, PChar(aUrl), nil, 0, 0, 0);
    и
    hSession := InternetOpen('MyApp', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
    ....
    остальное все вроде понятно .... в memfile типа TMemoryStream зугружается картинка, причем НЕ ПОТОКОМ, потому что там нет потока , а просто файл на сервере стоит, и каждые 3 сек (или скока там) обновляется...
    ...
    А как через сокеты скачать файл ? .... по протоколу http ?

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Похожие темы

  1. DotA & others.
    от Glun в разделе Warcraft & WoW
    Ответов: 677
    Последнее сообщение: 04.12.2012, 13:10
  2. Abuse
    от nons в разделе Городские сайты .Bratsk.org
    Ответов: 659
    Последнее сообщение: 15.02.2010, 19:13
  3. Глюк кардридера.
    от Arhangel в разделе Software
    Ответов: 8
    Последнее сообщение: 07.04.2007, 11:53
  4. Ответов: 2
    Последнее сообщение: 11.12.2006, 00:28
  5. Чё за глюк?
    от ДиМаС в разделе Городские сайты .Bratsk.org
    Ответов: 4
    Последнее сообщение: 18.10.2006, 01:54

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.