AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Twain

Ein Thema von ngott2 · begonnen am 12. Feb 2014 · letzter Beitrag vom 12. Feb 2014
Antwort Antwort
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Delphi Twain

  Alt 12. Feb 2014, 13:37
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
SelectedSource := 0;

nun muss ich es so machen
SelectedSource := fTwain.SelectSource; Dabei geht ein Fenster auf wo man den richtigen Scanner wählen kann.
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.

Geändert von ngott2 (12. Feb 2014 um 13:44 Uhr)
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#2

AW: Delphi Twain

  Alt 12. Feb 2014, 13:45
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.)

Das sollte mit DEVCON gehen.
Suche bei msdn devcon.
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#3

AW: Delphi Twain

  Alt 12. Feb 2014, 14:33
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.
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: Delphi Twain

  Alt 12. Feb 2014, 15:19
Ich verwende folgende Twain Komponente http://delphitwain.sourceforge.net/
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: Delphi Twain

  Alt 12. Feb 2014, 15:34
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.
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#6

AW: Delphi Twain

  Alt 12. Feb 2014, 15:52
Ähm... ja.
Im Grunde die gleiche Komponente, nur dass diese Version seit 2004 nicht mehr verändert wurde.
Unter www.kluug.net/delphitwain.php findest Du eine Unicode-fähige Version vom 21. Dezember 2013.
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.
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#7

AW: Delphi Twain

  Alt 12. Feb 2014, 16:12
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;
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: Delphi Twain

  Alt 12. Feb 2014, 16:36
Mit der neuen Twain Unit geht es wirklich ohne Probleme danke
  Mit Zitat antworten Zitat
Benutzerbild von Guido R.
Guido R.

Registriert seit: 5. Jul 2007
141 Beiträge
 
Delphi 12 Athens
 
#9

AW: Delphi Twain

  Alt 12. Feb 2014, 16:46
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:
   FreeAndNil(ftwain);
   fTwain :=TDelphiTwain.Create(nil);
das hier :

Delphi-Quellcode:
  
  if not Assigned(fTwain)
   then begin
         fTwain := TDelphiTwain.Create(Self);
         fTwain.OnTwainAcquire := fTwainTwainAcquire;
        end;
{...}

Delphi-Quellcode:
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;
Wenn Du dann noch SelectedSource global definierst, mit -1 initialisierst und nur mit fTwain.SelectSource
neu zuweist, wenn der Wert für SelctedSource=-1 ist, dann kannst Du die Abfragen nach der Scanquelle auf
einmal pro Programmausführung reduzieren
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz