-
Здравствуйте все!!! и всем!!! пытаюсь написать простинькую программку для себя которая бы вела електронный архив документов, есть сканер с автоподачиком рз 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;
он показывает (если дописать строку) то сохроняет только последний документ который отсканировал, а как мне быть если в автоподачике лежит целая пачка? просмотрел все вопросы но такой проблемы не встречал
-
> 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;
|