![]() |
Delphi Twain
Hallo,
mein Scan Programm ist nun fast fertig. Das Design steht und der Upload klappt. Nun habe ich noch einen neuen Scanner dazubekommen. Der macht mir allerdings 2 Probleme. Problem 1 den alten Scanner habe ich so ausgewählt
Delphi-Quellcode:
SelectedSource := 0;
nun muss ich es so machen
Delphi-Quellcode:
Dabei geht ein Fenster auf wo man den richtigen Scanner wählen kann.
SelectedSource := fTwain.SelectSource;
Dies soll aber automatisch geschen es wird nur ein Scanner genutzt. Problem 2 : Ich muss den neuen Scanner wenn das Programm läuft einmal neu Starten, weil ich sonst eine access violation bekomme. Hat jemand eine Idee woran es liegen kann, die Exception wird irgendwo in der Twain Komponente ausgelöst. Wenn keiner eine Idee hat woran es liegt dann würde ich gerne wissen wie kann man an besten den Scanner einmal trennen Software-seitig und ihn dann neu erkennen ? (Gerät deaktivieren und wieder aktivieren ohne das der Nutzer das macht.) Ich hoffe das mir jemand helfen kann. |
AW: Delphi Twain
Zitat:
Das sollte mit DEVCON gehen. Suche bei msdn devcon. |
AW: Delphi Twain
Benutzt Du die DelphiTwain-Komponente von Kluug ?
IdF. kannst Du doch mit fTwain.SourceCount leicht ermitteln, wie viele Quellen Dir zur Verfügung stehen und für den Fall dass Du mehrere Sourcen hast, kommst Du über FTwain.Sources[x] an alle relevanten Informationen und somit auch an den Index einer bestimmten Source. Gruß Guido R. |
AW: Delphi Twain
Ich verwende folgende Twain Komponente
![]() |
AW: Delphi Twain
Ich habe es jetzt so gelöst wenn mehr als ein Scaner gefunden werden dann muss man ihn einmal auswählen und den behält er dann bis das Programm neu gestartet wird.
Bloß das der Scaner neu erkannt werden muss macht mir noch Bauchschmerzen. Und ihn einfach einmal zu deaktivieren und wieder aktivieren finde ich ein bisschen unsauber. Aber ich werde es vorerst so lösen. Danke ihr beiden. |
AW: Delphi Twain
Ähm... ja.
Im Grunde die gleiche Komponente, nur dass diese Version seit 2004 nicht mehr verändert wurde. Unter ![]() Vielleicht löst eine aktuelle Version Dein Problem direkt. Wie gehst Du grundsätzlich vor ? Führst Du das LoadLibrary zu Programmstart aus und gibst die Library zum Programmende wieder frei, oder führst Du LoadLibrary und UnloadLibrary bei Bedarf aus ? Gruß Guido R. |
AW: Delphi Twain
So gehe ich vor
ftwain gibt es auf jeden Fall schon.
Code:
FreeAndNil(ftwain);
fTwain :=TDelphiTwain.Create(nil); try if fTwain.LoadLibrary then begin fTwain.SourceManagerLoaded := True; {Allow user to select source} SelectedSource := fTwain.SelectSource; ShowMessage(IntToStr (fTwain.SourceCount)); if (SelectedSource <> -1) then begin {Load source, select transference method and enable display interface} fTwain.Source[SelectedSource].Loaded := True; {Show scanconfig!} fTwain.Source[SelectedSource].ShowUI := False; fTwain.Source[SelectedSource].Enabled := True; end else begin ShowMessage('Twain is not installed.'); end; end; except ShowMessage('Twain is not installed.'); end; |
AW: Delphi Twain
Mit der neuen Twain Unit geht es wirklich ohne Probleme danke :)
|
AW: Delphi Twain
Ich würde nicht bei jedem Aufruf die Komponente zerstören und neu aufbauen...
Ausserdem wo gibst Du an, was mit dem gescannten Bild passieren soll und dass nach einem Bild Schluss sein soll ? Probier mal anstelle von
Delphi-Quellcode:
das hier :
FreeAndNil(ftwain);
fTwain :=TDelphiTwain.Create(nil);
Delphi-Quellcode:
{...}if not Assigned(fTwain) then begin fTwain := TDelphiTwain.Create(Self); fTwain.OnTwainAcquire := fTwainTwainAcquire; end;
Delphi-Quellcode:
Wenn Du dann noch SelectedSource global definierst, mit -1 initialisierst und nur mit fTwain.SelectSource
procedure TForm1.FTwainTwainAcquire(Sender: TObject; const Index: Integer;
Image: TBitmap; var Cancel: Boolean); begin Image.SaveToFile('C:\Temp\MyImage.BMP'); {Mach was mit dem Bild} Cancel := TRUE; {Nur ein Bild scannen} end; neu zuweist, wenn der Wert für SelctedSource=-1 ist, dann kannst Du die Abfragen nach der Scanquelle auf einmal pro Programmausführung reduzieren ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz