![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сканер [D7, WinXP]
fedormoore © (2007-11-01 14:17:00)Здравствуйте все!!! и всем!!!
пытаюсь написать простинькую программку для себя которая бы вела електронный архив документов, есть сканер с автоподачиком рз scanjet 5590 и есть вот такой код
procedure TForm1.Accquire1Click(Sender: TObject);
var
dat: hBitMap;
PInfo: PBitMapInfoHeader;
Height,Width:integer;
{Функция возведения 2 в степень}
function stp2(s:byte):longint;
var
m: longint;
i: byte;
begin
m:=2;
for i:=2 to s do m:=m*2;
stp2:=m;
end;
begin
{Получаем указатель на графические данные}
dat:=TWAIN_AcquireNative(Handle,0);
if dat <> 0 then begin
{Получаем указатель на область памяти содержащей DIB
данные и блокируем область памяти}
PInfo:=GlobalLock(dat);
{Анализируем полученные данные}
Height:=PInfo.biHeight ;
Width:=PInfo.biWidth ;
Wcm.Caption :=floatToStrF(100/PInfo.biXPelsPerMeter*Width,ffNumber,8,3)+' cm';
Hcm.Caption :=floatToStrF(100/PInfo.biYPelsPerMeter*Height,ffNumber,8,3)+' cm';
Colors.Caption := floatToStrF(stp2(PInfo.biBitCount),ffNumber,8,0)+ ' цветов';
{Разблокируем память}
GlobalUnlock(dat);
{Передаем в битовую матрицу графические данные}
{И устанавливаем перехват ошибок}
try
MyBitMap.Palette :=TWAIN_CreateDibPalette(dat);
MyBitMap.Width := Width;
MyBitMap.Height := Height;
TWAIN_DrawDibToDC(MyBitMap.Canvas.Handle,0,0,Width,Height,dat,0,0);
except
{Обрабатываем наиболее вероятную ошибку связанную с не хваткой ресурсов
для загрузки изображения}
on EOutOFResources do
MessageDlg('TBitMap: Нет ресурсов для загрузки изображения!',
mtError,[mbOk],0);
end;
{Отображаем графические данные}
//Canvas.Draw(10,10,MyBitMap);
Image1.Picture.Graphic:=MyBitMap;
{Освобождаем память занятую графическими данными}
TWAIN_FreeNative(dat);
end;
end;
он показывает (если дописать строку) то сохроняет только последний документ который отсканировал, а как мне быть если в автоподачике лежит целая пачка? просмотрел все вопросы но такой проблемы не встречал
tesseract (2007-11-01 16:39:00) [1]
> function stp2(s:byte):longint;var m: longint; i: byte;
> begin m:=2; for i:=2 to s do m:=m*2; stp2:=m;end;
Странный код покажу проще :
function stp2(s:byte):cardinal
m:caridnal;
begin
m:=2;
result:=m shl s;
end;