Текущий архив: 2008.08.03;
Скачать: CL | DM;
Вниз
сканер Найти похожие ветки
← →
fedormoore © (2007-11-01 14:17) [0]Здравствуйте все!!! и всем!!!
пытаюсь написать простинькую программку для себя которая бы вела електронный архив документов, есть сканер с автоподачиком рз 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) [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;
Страницы: 1 вся ветка
Текущий архив: 2008.08.03;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c