Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Twain (https://www.delphipraxis.net/184022-delphi-twain.html)

HPB 20. Feb 2015 07:50

Delphi Twain
 
Guten Tag Delphianer,
ich habe die Delphi-Twain Komponente herunter geladen.
Wie wird die Delphi Twain Komponente installiert?
Kann mir da jemand auf die Sprünge helfen??
Gibt es vielleicht eine andere Scanner-Komponente, darf ruhig etwas kosten?
Ich selber habe nichts gefunden. Vielleicht habe ich auch nur falsch gesucht.
Mit Gruß
HPB

Captnemo 20. Feb 2015 08:42

AW: Delphi Twain
 
Die Delphi-Twain Komponente?

Ich kann dir sagen, dass ich eine Unit habe, mit der ich die Scanner unter Windows auslisten, einen Scanner ansprechen und mir ein Dokument scannen lassen kann. Leider ist die Unit recht alt, und ich weiß leider auch nicht mehr, wo ich sie her habe. Da im Header nix steht, weiß ich auch nicht, ob ich sie so weiter geben darf (ist schließlich nicht von mir). Die Unit ist recht alt, hatte ich damals unter D7 genutzt, und seit her nicht mehr gebaucht.

Hier
http://www.delphipraxis.net/157258-s...delphi-xe.html
und hier
http://www.delphipraxis.net/154861-w...ansteuern.html
könntest du mal reinschauen.

Lemmy 20. Feb 2015 08:48

AW: Delphi Twain
 
Hi,

ich spiel mit der hier gerade rum: (Kostenlos): http://kluug.net/delphitwain.php
funktioniert so weit ich feststellen kann - leider scheint mein MFGerät einen Fehler in der Twainschnittstelle zu haben.

Kostenpflichtig wäre das hier noch: http://www.dynarithmic.com/details_dtwain.html
wobei die angeblich bei unseren Kunden hin und wieder Probleme macht (zumindest sagt das der Flurfunk), allerdings ist die Benutzung etwas einfacher (Abruf von mehrseitigen PDF, das musst Du bei der kostenlosen halt selbst implementieren)

Grüße

haentschman 20. Feb 2015 09:39

AW: Delphi Twain
 
Moin...

Zitat:

Installation
DelphiTwain is a runtime library. There are no visual components that have to be installed. Just add the source code directory to your library path and start using DelphiTwain.
...einfacher als du denkst. :thumb:

Edit:
Zitat:

funktioniert so weit ich feststellen kann
...dann ist mein Kommentar ja nutzlos. :?

Perlsau 2. Mär 2015 13:43

AW: Delphi Twain
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Lemmy (Beitrag 1290687)
Hi, ich spiel mit der hier gerade rum: (Kostenlos): http://kluug.net/delphitwain.php
funktioniert so weit ich feststellen kann

Moinsen,

habe DelphiTwain von Kluug.net "installiert" (XE7) und kann damit scannen – allerdings nur in einer 32-Bit-Anwendung. Kompiliere ich die Anwendung für 64-Bit, erhalte ich die Meldung Twain is not installed.

Als nächstes hab ich mir den neuesten Treiber für den eingesetzten Scanner (CanoScan Lide 100) geladen und installiert, damit soll die 64-Bit-Unterstützung gewährleistet sein. Ich habe auch bereits den TWAIN Data Source Manager heruntergeladen und die darin enthaltenen DLLs in die entsprechenden Windows-Verzeichnisse kopiert: Auch das brachte keinen Erfolg: Im 64-Bit-Kompilat ist Twain weiterhin nicht installiert.

Danach hab ich mir nochmal die Seite kluug.net angeschaut. Dort steht:

you need 64bit scanner and TWAIN drivers: and tweak the line 778 in DelphiTwain.pas:
fHandle := Windows.LoadLibrary(PChar(TwainDirectory + TWAINLIBRARY));
to the new DLL


Das habe ich nicht verstanden. "Tweak" heißt doch soviel wie "zwicken", zumindest nach meinem Wörterbuch hier. In Zeile 778 der DelphiTwain.pas ist aber so ein Befehl gar nicht zu finden, dort steht ein end; und das gehört zu dieser Procedure:
Delphi-Quellcode:
procedure TTwainIdentity.SetMajorVersion(const aMajorVersion: TW_UINT16);
begin
  Structure.Version.MajorNum := aMajorVersion;
end;
Jetzt hab ich mir gedacht: Kopierst du die DLLs einfach in das entsprechende Programmverzeichnis. Die 64-Bit-Binary wird hier im Ordner ..\Debug\64bit\BIN erstellt, und da hab nun die beiden Dateien TWAINDSM.dll und TWAINDSM64.msm reinkopiert. Nun erscheint zwar keine Fehlermeldung beim Programmstart, dennoch stehen in meinem Scanner-Formular keine Scanner zur Auswahl bereit, wenn ich mit 64-Bit kompiliert habe, in der 32-Bit-Anwendung dagegen schon, wie die Grafik unten zeigt.

Hat schon einmal jemand diese Version von DelphiTwain mit XE7 in einer 64-Bit-Anwendung zum Laufen gebracht? Oder weiß irgend jemand, was ich noch versuchen könnte oder was ich falsch gemacht habe?

Danke.

Jumpy 2. Mär 2015 14:19

AW: Delphi Twain
 
Tweak kann auch sowas wie "umbiegen" oder "leicht verändern" heißen und ich denke es geht um die Zeile mit dem Code:

fHandle := Windows.LoadLibrary(PChar(TwainDirectory + TWAINLIBRARY));

die aber wahrscheinlich überall, nun nicht (mehr) in Zeile 778 steht, wie das halt mit so Dokus ist.

Vielleicht einfach mal danach im Quellcode suchen.

Ich bin jetzt nicht so der Twain/dll Experte aber wahrsch. heißt die (64er) dll anders und steht in einem anderen Verzeichnis als die 32er. Dementsprechend müsstest du mal schauen, was in TwainDirectory und/bzw. in TWAINLIBRARY steht und das ggf. anpassen.

hathor 2. Mär 2015 14:24

AW: Delphi Twain
 
So schwer ist das nicht...
Die 64Bit-Version ist ROT:

const
{Name of the Twain library for 32 bits enviroment}
{$IFDEF WIN64}
TWAINLIBRARY: String = 'TWAINDSM.DLL';
{$ELSE}
TWAINLIBRARY: String = 'TWAIN_32.DLL';
{$ENDIF}

Es gibt im WINDOWS-Verzeichnis ein Unterverzeichnis twain_32:
Das könnte mit TwainDirectory gemeint sein.
Vielleicht wird üblicherweise da nach einem Treiber gesucht.
Ich habe nocht etwas Anderes gefunden:
http://sourceforge.net/projects/twain-dsm/files/

Zitat:
TWAIN Data Source Manager [DSM],
compliant with version 2.2 of the TWAIN specification.

[Windows]
The TWAIN DSM is a shared library named TWAINDSM.DLL. There is a 32bit and a
64bit version of this file. TWAINDSM.DLL is installed in the Windows System
directory (normally C:\Windows\System32). If installing the 32bit file on a
64bit system, make sure it ends up in the WOW64 System directory (normally
C:\Windows\SysWow64)

The DSM looks for data sources in C:\Windows\twain_32 or C:\Windows\twain_64.
Data sources are also shared objects, but they have a .ds extension.
ex: datasource.ds

The DSM walks the twain_[32|64] directory and LoadLibrary each .ds
file it finds, then uses GetProcAddress to locate the DS_Entry function.

The DSM looks for the environment variable, TWAINDSM_LOG, for the location of
the log file to write to. If the environment variable is not set, then no log
is kept. Here is an example of setting the environment variable from a
command prompt:
...


Delphi-Quellcode:
function TCustomDelphiTwain.LoadLibrary(): Boolean;
var
  TwainDirectory: String;
begin
  {The library must not be already loaded}
  if (not LibraryLoaded) then
  begin
    Result := FALSE; {Initially returns FALSE}
    {Searches for Twain directory}
    TwainDirectory := GetTwainDirectory();
    {Continue only if twain is installed in an known directory}
    if TwainDirectory <> '' then
    begin

      fHandle := Windows.LoadLibrary(PChar(TwainDirectory + TWAINLIBRARY));
      {If the library was sucessfully loaded}
      if (fHandle <> INVALID_HANDLE_VALUE) then
      begin
...

DeddyH 2. Mär 2015 14:24

AW: Delphi Twain
 
Im aktuellen Code ist der Name der DLL bereits über eine Compiler-Direktrive angepasst, so dass man eigentlich gar nichts mehr händisch ändern muss.

Perlsau 2. Mär 2015 14:48

AW: Delphi Twain
 
@hathor & @DeddyH

Danke für die schnellen Antworten :thumb:
Delphi-Quellcode:
Dir + String(TWAINLIBRARY)
Diese beiden Variablen zeigen die korrekten Inhalte: Dir steht auf 'C:\Windows\' und String(TWAINLIBRARY) auf 'TWAINDSM.DLL', die auch tatsächlich dort zu finden ist.

Auch ein neuerer Treiber (lide100win641403ea24.exe) scheint kein 64-Bit-Treiber zu sein, das vermute ich jedenfalls, weil im Windows-Ordner ein Verzeichnis namens Twain_32 existiert.

Heißt das jetzt, wenn für den einzusetzenden Scanner kein 64-Bit-Windows-Driver vorhanden ist, kann man den mit einer 64-Bit-Anwendung auch nicht verwenden?

DeddyH 2. Mär 2015 14:51

AW: Delphi Twain
 
32 Bit-Programme können nur 32 Bit-DLLs laden, 64 Bit-Programme nur 64 Bit-DLLs. Da Treiber im Allgemeinen aus DLLs bestehen, brauchst Du also zwingend eine 64 Bit-Variante, sonst geht es nicht.

Perlsau 2. Mär 2015 14:58

AW: Delphi Twain
 
Aber die TWAINDSM.DLL ist doch eine 64-Bit-DLL, zumindest wenn ich den Dateinamen im Paket Twain Datasource Manager vertraue. Im Windows-Ordner befindet sich die TWAINDSM.DLL aus dem Ordner twain64 aus diesem Zip-Archiv mit der Größe von 168.144 Bytes.

Diese DLL ist ja nicht der Windows-Treiber für den Scanner (von dem ich vermute, daß er 32-bittig ist), sondern die DLL, welche die Twain-Schnittstelle beinhaltet, und die hat ja mit dem Scanner erstmal nichts zu tun bzw. wird von allen Scannern verwendet.

DeddyH 2. Mär 2015 15:16

AW: Delphi Twain
 
Ja, aber die TWAIN-Schnittstelle wird ja vermutlich auch irgendwie auf den installierten Treiber zugreifen, und das geht halt nur bei gleicher Bittigkeit.
Diese Angaben sind ohne Gewehr oder Pistole :mrgreen:

Perlsau 2. Mär 2015 15:20

AW: Delphi Twain
 
Irgendwie versteh ich das nicht so ganz: Ich kann z.B. den Drucker oder sonstige Geräte, die auch über einen Windows-Treiber funktionieren, problemlos mit einer 32- und mit einer 64-Bit-Anwendung ansprechen. Nach deinen "Angaben ohne Gewehr" dürfte das ja eigentlich nicht gehen, es sei denn, diese Geräte verfügen über einen 32- und über einen 64-Bit-Treiber. Oder mach ich da jetzt einen Denkfehler?

DeddyH 2. Mär 2015 15:31

AW: Delphi Twain
 
Hier ist das recht gut erklärt. Ob das für TWAIN nun auch so zutrifft, vermag ich nicht zu sagen, so gut kenne ich die Schnittstelle nicht.

Perlsau 2. Mär 2015 15:53

AW: Delphi Twain
 
Danke. Dort steht: "I read that under Vista64 all drivers have to be certified 64 bit drivers."

Wenn das in Win7-64 genauso ist, dann müßten alle Treiber, die man in einem Windows-64-System verwendet, auch 64-bittig sein, oder?
Und wenn das zutrifft, liegt das Problem nicht am Scanner-Treiber.

Hab vorhin mal eine Mail an Ondrej Pokorny (den Weiterentwickler von DelphiTwain) geschickt und eben gerade eine Antwort erhalten: Ondrej meint dort:

Ich habe leider auch keinen Scanner mit einer 64bit Anwendung über Twain zum Laufen gebracht. Nicht einmal mit dem ofiziellen Twacker:
http://www.twain.org/scannerdriverde...and-tools.html


Das dürfte dann das Aus für Twain in einer 64-Bit-Anwendung sein :cry:

DeddyH, kennst du vielleicht noch eine andere kostenlose Twain- oder WIA-Komponente für die neueren Delphi-Versionen?

DeddyH 2. Mär 2015 15:57

AW: Delphi Twain
 
Leider nein, ich hab seit Jahren nichts mehr selbst mit TWAIN gemacht, aber ich würde mal bei Torry nachschauen.

Perlsau 2. Mär 2015 16:11

AW: Delphi Twain
 
Torry war leider Fehlanzeige. Macht aber nix, ich werde jetzt die Idee von Ondrej Pokorny umsetzen und das Scannen in eine externe 32-Bit-Anwendung auslagern, die mit der Hauptanwendung zusammenarbeitet und das benötigte Scanergebnis liefert.

roga 2. Mär 2015 17:57

AW: Delphi Twain
 
Vielleicht hilft das hier weiter...

BadenPower 3. Mär 2015 08:33

AW: Delphi Twain
 
Zitat:

Zitat von Perlsau (Beitrag 1292053)
[
Als nächstes hab ich mir den neuesten Treiber für den eingesetzten Scanner (CanoScan Lide 100) geladen und installiert, damit soll die 64-Bit-Unterstützung gewährleistet sein.

Bist Du sicher, dass Du den richtigen TWAIN-kompatibelen Treibersatz ausgewählt hast.

Dies wäre der "lide100win641403ea24.exe".

Wenn ich dem Link folge, dann kommt dort zuerst aber nur der 32-Bit-TWAIN-kompatible Treiber. Also "lide100win1403ea24.exe".

Perlsau 3. Mär 2015 10:07

AW: Delphi Twain
 
Wenn du dem Link folgst und etwas oberhalb des ersen Download-Links (der ist für den MP-Navigator) die Combobox betrachtest, dann ist dort vermutlich dein Betriebssystem ausgewählt, weil die Seite das irgendwie ermittelt hat. Gehe ich recht in der Vermutung, daß du diese Seite mit einem 32-Bit-Windows betrachtest? Ich dagegen betrachte sie mit einem 64-Bit-Windows, und daher ist dort in der Combobox auch mein 64-Bit-Windows ausgewählt. Die Seite stellt mir die meiner Windows-Version entsprechenden Link-Versionen automatisch zur Verfügung. Ich habe also genau den Treiber, der zu meiner Windows-Version paßt. Der Dateiname der heruntergeladenen Exe entspricht dem, den du oben angegeben hast. Da bin ich sicher. Ganz sicher. Hab dennoch Dank für deine Nachfrage :thumb:

Vielleicht testet ja noch jemand anderes außer mir und Ondrej Pokorny (den Weiterentwickler von DelphiTwain), verschiedene Scanner mit einer 64-Bit-Anwendung via DelphiTwain anzusprechen. Ich habe jedenfalls den Eindruck gewonnen, daß das grundsätzlich nicht geht, weil der Treiber zwar für ein 64-Bit-OS geschrieben wurde, selbst aber intern mit 32 Bit arbeitet, was auch immer. Ich kann mich damit nicht allzu lange aufhalten, die gestellte Aufgabe muß zeitnah erledigt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 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