Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok (https://www.delphipraxis.net/209670-delphitwain-findet-keine-geraete-delphi-10-1-xe4-alles-ok.html)

mts 7. Jan 2022 11:35

DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Hallo zusammen,

Habe hier ein ganz verrücktes Problem.
Ich nutze DelphiTwain schon seit geraumer Zeit.
Jetzt habe ich eine Anwendung von XE4 auf Delphi 10.1 migriert und delphiTwain findet keine Scanner mehr.

Habe daraufhin einfach die Sample-Anwendung (DelphiTwainDemo2) kompiliert. In Delphi XE4 werden sofort die Scanner angezeigt, in Delphi 10.1 keine.
- Beides 32bit Anwendungen
- LoadLibrary läd in beiden Fällen erfolgreich die gleiche dll (c:\windows\TWAIN_32.DLL)

Das Problem tritt in der Methode "TCustomDelphiTwain.EnumerateDevices()" auf.
Delphi XE4:
Code:
    CallRes := TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
      MSG_GETFIRST, @NewSource.Structure);

>>   CallRes = 0
Delphi 10.1:
Code:
    CallRes := TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
      MSG_GETFIRST, @NewSource.Structure);

>>   CallRes = 1
Hat irgendjemand eine Idee oder evtl. das gleiche Problem schon gehabt?

TurboMagic 7. Jan 2022 11:49

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Hallo,

wofür steht denn der Fehlercode 1?

Grüße
TurboMagic

Sinspin 7. Jan 2022 12:02

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Hallo, prüf mal ob die übergebenen Konstanten noch irgendwo anders deklariert sind.
Das gleiche mit AppInfo, was steht da drinnne wenn aus XE4 aufgerufen und was bei 10.1?

Ich habe bei mir (Delphi RIO) nur das Problem das ich nicht am DevPc (VM, Remote Zugriff) testen kann. Der virtuelle Twain Scanner wirft bei mir immer eine AV aus QT, das QT nicht korrekt installiert wäre. Alle anderen QT Programme laufen aber.

mts 7. Jan 2022 12:04

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Ist ein ganz allgemeiner Fehler (TWRC_FAILURE)
Ich habe zwischenzeitlich mal eine andere Lib ausprobiert (https://github.com/dynarithmic/twain_library), die natürlich unterm Strich das selbe macht und habe exakt das gleiche Problem.

mts 7. Jan 2022 12:05

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von Sinspin (Beitrag 1500224)
Hallo, prüf mal ob die übergebenen Konstanten noch irgendwo anders deklariert sind.
Das gleiche mit AppInfo, was steht da drinnne wenn aus XE4 aufgerufen und was bei 10.1?

Ich habe bei mir (Delphi RIO) nur das Problem das ich nicht am DevPc (VM, Remote Zugriff) testen kann. Der virtuelle Twain Scanner wirft bei mir immer eine AV aus QT, das QT nicht korrekt installiert wäre. Alle anderen QT Programme laufen aber.

> war das 1. was ich gemacht habe... Alles gleich.

KodeZwerg 7. Jan 2022 12:55

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Vielleicht kann Dir die WinAPI weiterhelfen?
Windows Image Acquisition (WIA)

Delphi-Quellcode:
var
  DevMgr: IDeviceManager;
  Scanner: Idevice;
  Picture: IItem;
  Image: OleVariant;
  AImage: IImageFile;
begin
  DevMgr := CreateOleObject('WIA.DeviceManager') as IDeviceManager;

  // Figure out which device is the scanner
  Scanner:= DevMgr.DeviceInfos.Item[1].Connect;

  //Command: Figure out which command scans..
  Picture := Scanner.ExecuteCommand(Scanner.Commands.Item[1].CommandID);

  //Transfer as JPG
  Image := Picture.Transfer(Picture.Formats.Item[1]);

  //Save the image
  AImage := IImageFile(Image);
  AImage.SaveFile('c:\wia_viaScanner\image.' + AImage.FileExtension);
end;

gefunden bei SO.

mts 7. Jan 2022 15:49

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
ich werde hier noch verrückt. Ich habe jetzt testweise auch mal delphi 10.3 installiert. > gleiches Problem

WIA und Windows 10 ist ein totaler Horror. Man kann ja gerne mal versuchen um aktuellen Windows 10 einen WIA-Treiber zu installieren...
> Habe den WIA-Scanner aber dennoch installiert, habe dann in NAPS2 (Open-Source scanner software) kontrolliert, dass sowohl der WIA als auch der TWAIN Treiber angezeigt wird und funktioniert. Dort ist alles ok.

ABER, sobald ich versuche per WIA den Scanner über Delphi zu finden, finde ich keinen Scanner. TWAIN findet nach wie vor nur über delphi XE4 den scanner.
Habe dann mal testweise eine C# Projekt aufgemacht. Dort finde ich per WIA auch keinen Scanner, TWAIN funktioniert.

Steku 7. Jan 2022 16:18

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Ich denke du meinst mit mit DelphiTwain das hier? http://www.kluug.net/delphitwain.php

Zum Testen vielleicht geeignet (Trialversion): http://www.intervalsoftware.com/envision.html

Grüße
Steku

peterbelow 7. Jan 2022 18:25

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von mts (Beitrag 1500218)
Hallo zusammen,

Habe hier ein ganz verrücktes Problem.
Ich nutze DelphiTwain schon seit geraumer Zeit.
Jetzt habe ich eine Anwendung von XE4 auf Delphi 10.1 migriert und delphiTwain findet keine Scanner mehr.

Habe daraufhin einfach die Sample-Anwendung (DelphiTwainDemo2) kompiliert. In Delphi XE4 werden sofort die Scanner angezeigt, in Delphi 10.1 keine.
- Beides 32bit Anwendungen
- LoadLibrary läd in beiden Fällen erfolgreich die gleiche dll (c:\windows\TWAIN_32.DLL)

Das Problem tritt in der Methode "TCustomDelphiTwain.EnumerateDevices()" auf.
Delphi XE4:
Code:
    CallRes := TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
      MSG_GETFIRST, @NewSource.Structure);

>>   CallRes = 0
Delphi 10.1:
Code:
    CallRes := TwainProc(AppInfo, nil, DG_CONTROL, DAT_IDENTITY,
      MSG_GETFIRST, @NewSource.Structure);

>>   CallRes = 1
Hat irgendjemand eine Idee oder evtl. das gleiche Problem schon gehabt?

Eventuell liegt es an einer Änderung von Optionen wie dem Record-Alignment. Zeig mal die Deklaration des Typs von Newsource.Structure.

mts 7. Jan 2022 18:55

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von peterbelow (Beitrag 1500240)

Eventuell liegt es an einer Änderung von Optionen wie dem Record-Alignment. Zeig mal die Deklaration des Typs von Newsource.Structure.

Genau das glaube ich auch.
Ich habe mir die original-header mal angeschaut (https://github.com/twain/twain-speci...ns/2.4/twain.h)
Alle structs sind pack(2) aligned. Soweit ich weiß ist ein Delphi "packed record" aber pack(1).

Wundere mich bloß wie der jemals laufen konnte? Oder übersehe ich hier was?

Die Änderung in das hier hat aber auch nix gebracht:
{$A2}
TW_IDENTITY = record
...

vorher:
Code:
  TW_IDENTITY = packed record
    Id: TW_UINT32;            { Unique number. In Windows, application hWnd }
    Version: TW_VERSION ;     { Identifies the piece of code }
    ProtocolMajor: TW_UINT16; { Application and DS must set to TWON_PROTOCOLMAJOR }
    ProtocolMinor: TW_UINT16; { Application and DS must set to TWON_PROTOCOLMINOR }
    SupportedGroups: TW_UINT32; { Bit field OR combination of DG_ constants }
    Manufacturer: TW_STR32;  { Manufacturer name, e.g. "Hewlett-Packard" }
    ProductFamily: TW_STR32; { Product family name, e.g. "ScanJet" }
    ProductName: TW_STR32;   { Product name, e.g. "ScanJet Plus" }
  end;
>> Ich bin mittlerweile zu 90% sicher, dass es etwas mit dem byte-alignment zu tun hat. Finde allerdings keine Info, dass dort etwas geändert wurde.

Hier die komplette Funktion mal auf das wesentliche runtergebrochen (funktioniert in XE4, funktioniert nicht in 10.1):
Code:
var
  _Handle: HInst;
  _TwainProc: TDSMEntryProc;
  res : boolean;
  resI : integer;
  idn : TW_IDENTITY;
  newS : TW_IDENTITY;
  hndl : THandle;
begin
  _Handle := LoadLibrary('c:\Windows\twain_32.dll');;
  if (_Handle = INVALID_HANDLE_VALUE) then exit;

  _TwainProc := nil;
  @_TwainProc := GetProcAddress(_Handle, MakeIntResource(1));
  if (@_TwainProc = nil) then exit;

  idn.Id := 0;
  idn.Version.MajorNum := 0;
  idn.Version.MinorNum := 0;
  idn.Version.Language := 0;
  idn.Version.Country := 0;
  idn.Version.Info := '';
  idn.ProtocolMajor := 1;
  idn.ProtocolMinor := 9;
  idn.SupportedGroups := DG_CONTROL or DG_IMAGE;
  idn.Manufacturer := '';
  idn.ProductFamily := '';
  idn.ProductName := '';

  hndl := Handle;
  res := _TwainProc(@idn, nil, DG_CONTROL, DAT_PARENT, MSG_OPENDSM, @hndl) = TWRC_SUCCESS; //source manager loaded
  if (not res) then exit;

  newS := idn;
  newS.Id := 0;
  resI := _TwainProc(@idn, nil, DG_CONTROL, DAT_IDENTITY, MSG_GETFIRST, @newS);
  if (resI = 0) then
    ShowMessage('gut');

mts 7. Jan 2022 20:18

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
was mich aber irritiert ist dieses Video: https://www.youtube.com/watch?v=2hJnehiB_hE&t=315s

Hier benutzt jemand ebenfalls DelphiTwain mit Delphi 10.3 (http://www.kluug.net/delphitwain.php) und bei ihm läuft alles.
Was ist jetzt bei mir anders?

johndoe049 7. Jan 2022 21:55

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von mts (Beitrag 1500247)
was mich aber irritiert ist dieses Video: https://www.youtube.com/watch?v=2hJnehiB_hE&t=315s

Hier benutzt jemand ebenfalls DelphiTwain mit Delphi 10.3 (http://www.kluug.net/delphitwain.php) und bei ihm läuft alles.
Was ist jetzt bei mir anders?

Im verlinkten Archiv ist eine Datei anders.

Datei: DelphiTwainUtils.pas

Zeile 338: if (Value > 0) and (Value >= Count) then

In der Originaldatei steht if (Value > 0) and (Value <= Count) then

venice2 7. Jan 2022 22:26

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Ich sehe noch einige Unterschiede mehr..
Vergleich zwischen.
http://delphitwain.sourceforge.net und delphitwain-kluug-1-5--2014-06-25.zip

Unicode Version nicht geprüft.
https://stackoverflow.com/questions/...nts-for-delphi
und noch einiges hier!
https://www.delphipraxis.net/1179589-post3.html

himitsu 7. Jan 2022 23:26

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Dein Screenshot sieht mir rechts nach Anpassungen für 32- und 64-Bit aus.

mts 8. Jan 2022 09:11

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
[QUOTE=mts;1500243]

Code:
var
  _Handle: HInst;
  _TwainProc: TDSMEntryProc;
  res : boolean;
  resI : integer;
  idn : TW_IDENTITY;
  newS : TW_IDENTITY;
  hndl : THandle;
begin
  _Handle := LoadLibrary('c:\Windows\twain_32.dll');;
  if (_Handle = INVALID_HANDLE_VALUE) then exit;

  _TwainProc := nil;
  @_TwainProc := GetProcAddress(_Handle, MakeIntResource(1));
  if (@_TwainProc = nil) then exit;

  idn.Id := 0;
  idn.Version.MajorNum := 0;
  idn.Version.MinorNum := 0;
  idn.Version.Language := 0;
  idn.Version.Country := 0;
  idn.Version.Info := '';
  idn.ProtocolMajor := 1;
  idn.ProtocolMinor := 9;
  idn.SupportedGroups := DG_CONTROL or DG_IMAGE;
  idn.Manufacturer := '';
  idn.ProductFamily := '';
  idn.ProductName := '';

  hndl := Handle;
  res := _TwainProc(@idn, nil, DG_CONTROL, DAT_PARENT, MSG_OPENDSM, @hndl) = TWRC_SUCCESS; //source manager loaded
  if (not res) then exit;

  newS := idn;
  newS.Id := 0;
  resI := _TwainProc(@idn, nil, DG_CONTROL, DAT_IDENTITY, MSG_GETFIRST, @newS);
  if (resI = 0) then
    ShowMessage('gut');
Das ist der komplette code, den man zum testen braucht. Wie man sieht nutze ich hier keine Funktionen aus irgendeiner Lib. Nutze nur die twain.pas header Datei.
Unter Delphi XE4 wird „gut“ ausgegeben, auf Delphi 10.1 nicht.

Es MUSS also an der TW_Identity Struktur liegen.

peterbelow 8. Jan 2022 10:27

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Da fehlt einfach zuviel notwendige Info. Wie hast Du TW_STR32 deklariert, z. B.? Sollte sowas wie array [0..31] of AnsiChar sein, nicht char...

hoika 8. Jan 2022 10:43

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Hallo,
schau Dir mal die default Alignments der beiden Delphi-Versionen an.

himitsu 8. Jan 2022 12:34

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Diese sind im Prinzip egal.

A gibt nicht die minimale, sondern die maximale Ausrichtung an,

und so lange es hier nicht um 64 Bit geht, sollte der Record überall gleich ausgerichtet werden.
* größte Felder sind 4 Byte
* kleine Felder 2 Byte und immer im Doppelpack, also auch 4



Was anders sein könnte, sind unterschiedliche Typgrößen,
wie z.B. LongInt was im Mac erschreckender Weise 8 Byte groß sein kann,
oder der eigentlich nicht existierende Typ Extended, welcher auch nicht überall gleich groß ist und den selben Typ darstellt.

venice2 8. Jan 2022 12:46

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Nutze nur die twain.pas header Datei.
Entschuldige!

Aber es kann doch nicht so schwer sein beide Dateien.. diese von XE4 und diese der 10.1 Version zu vergleichen.
Suche im Internet nach WinMerge (Ist frei verfügbar und open Source) Installiere das Teil und vergleiche dann beide Units mit dieser Anwendung.

Mache dir anschließend Gedanken darüber was hier eventuelle Unterschiede bewirken können.
Wir können hier letztendlich auch nur Raten.

mts 8. Jan 2022 13:17

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Aber es kann doch nicht so schwer sein beide Dateien.. diese von XE4 und diese der 10.1 Version zu vergleichen.
Wir verstehen uns da falsch. Ich habe hier nicht 2 verschiedene Dateien.
Ich habe eine einzige Header-Datei (Twain.pas) und nutze 1:1 den gleichen Code in Delphi XE4 und Delphi 10.1.

Im Anhang ist mal meine Test-Anwendung.

Delphi.Narium 8. Jan 2022 13:43

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Dann rate ich jetzt mal mit:

In der Routine gibt es drei Exit.
Ist sichergestellt, dass die Routine bei keinem dieser Exits aussteigt?

Wenn sie dort aussteigt, bei welchem.

Wenn ResI = 0 erfahren wir, dass das Ergebnis gut ist. Schön.

Und welchen Wert hat ResI, wenn das Ergebnis nicht gut ist?

Wir wissen letztlich nicht, ob die Dll überhaupt geladen werden konnte: 1. Exit
Ebensowenig wissen wir, ob GetProcAddress von Erfolg gekrönt wurde: 2. Exit
Dann wissen wir auch nicht, ob "// source manager loaded" nun eine gesicherte Behauptung oder eine Hoffnung ist: 3. Exit
Wenn ein Rückgabewert mehr als einen Wert erhalten kann, hilft es, alle möglichen Rückgabewerte abzufragen und/oder auszugeben. Nur den Rückgabewert für ein positives Ergebnis mit einer Bestätigungsmeldung auszugeben, aber bei negativem Ergebnis einfach nichts zu machen, bzw. nur ein "nicht gut" auszugeben, ist für eine effektive Fehlersuche nicht wirklich hilfreich.

Die TWAIN Specification äußert sich in Kapitel 10 u. a. zu den möglichen Fehlercodes.

Übrigens:

Bei mir liefern beide Programme das Ergebnis gut.

Exen einfach nach c:\temp\ entpackt und gestartet.

Und Achtung: Betriebssystem ist Windows XP, also was totel veraltetes, aber damit scheint es zu funktionieren.

Dann mal eben auf Delphi 7 "runtergetrimmt", kompiliert: Ergebnis = gut

Fazit: Da liegt (vermutlich) was anderes im Argen als nur Delphi XE4 <> Delphi 10.1.

mts 8. Jan 2022 13:57

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Delphi.Narium:

1) In dem von mir hochgeladenen code nutze ich kein GetProcAddress mehr. Habe die Funktion statisch verlinkt.
2) In beiden fällen läuft meine Anwendung bis unten durch (kein vorzeitiges exit)
3) resI = 0 > Scanner gefunden
resI = 1 > nichts gefunden.

Im Anhang mal beide bei mir kompilierten Versionen... Jetzt bin ich mal sehr gespannt ob die bei euch beide ResI = 0 ausgeben...

venice2 8. Jan 2022 14:01

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Nun ich habe keinen Scanner von daher ist es logisch das beide 1 ausgeben.
Habe es trotzdem getestet.
Kann leider nicht weiter helfen.

Delphi.Narium 8. Jan 2022 14:04

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Beide geben ResI=0 aus.

venice2 8. Jan 2022 14:08

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1500275)
Beide geben ResI=0 aus.

Versuche es doch mal auf einem gültigen System! ;) XP ist outofdate

mts 8. Jan 2022 14:09

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
wird ja immer verrückter...
Bei mir sagt die eine Anwendung 1 und die andere 0.

Weiß überhaupt nicht wo ich suchen soll... (Windows 10 64bit Build 19044.1415)

venice2 8. Jan 2022 14:10

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von mts (Beitrag 1500277)
wird ja immer verrückter...
Bei mir sagt die eine Anwendung 1 und die andere 0.

Weiß überhaupt nicht wo ich suchen soll... (Windows 10 64bit Build 19044.1415)

Nur mal so!
Versuch es mal mit Admin rechten...

Delphi.Narium 8. Jan 2022 14:14

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von venice2 (Beitrag 1500276)
Zitat:

Zitat von Delphi.Narium (Beitrag 1500275)
Beide geben ResI=0 aus.

Versuche es doch mal auf einem gültigen System! ;) XP ist outofdate

Hab' ich nicht. XP ist halt fast so alt wie ich und tuts für mich ausreichend gut und dauerhaft stabil. Mehr brauch' und willichnich ;-)

venice2 8. Jan 2022 14:19

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1500279)
Zitat:

Zitat von venice2 (Beitrag 1500276)
Zitat:

Zitat von Delphi.Narium (Beitrag 1500275)
Beide geben ResI=0 aus.

Versuche es doch mal auf einem gültigen System! ;) XP ist outofdate

Hab' ich nicht. XP ist halt fast so alt wie ich und tuts für mich ausreichend gut und dauerhaft stabil. Mehr brauch' und willichnich ;-)

War kein Vorwurf ist so wie es ist.. kein Problem für mich. :-D
Dann muß er leider warten.

mts 8. Jan 2022 14:24

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
ich habe meine Testeanwendungen jetzt mal auf andere PCs verteilt...

Das Problem tritt (bislang) nur auf 2 PCs auf, auf den anderen läuft es.
Hat auch nichts mit dem Scanner zu tun (ist ein Netzwerkscanner)

mts 8. Jan 2022 14:31

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Ich konnte den Fehler tatsächlich beheben...

Ich habe einfach auf den PCs, auf denen es nicht funktioniert hat den Treiber neu installiert.
Es ist mir zwar unerklärlich wie es hier einen Zusammenhang zwischen der Delphi-Version und dem Treiber geben kann, wenn doch der Twain-Aufruf 100% identisch ist!

venice2 8. Jan 2022 14:33

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Gratulation!
Trotz allem noch mein Twain.log

Zitat:

TWAIN_32.DLL - MESSAGE - CTwunk ::AppInitialize - Reset Log
TWAIN_32.DLL - MESSAGE - CTwunk ::OpenServer - Starting Thunker
TWAIN_32.DLL - MESSAGE - CTwunk ::CloseServer - Why Can't We Find The Thunker Window?
TWAIN_32.DLL - MESSAGE - DSM --DsmEntryDiagExit (RC = 0, CC = 0)
TWAIN_32.DLL - MESSAGE - CTWTRACE--(29) to NULL:
TWAIN_32.DLL - MESSAGE - CTWTRACE--CONTROL, IDENTITY, GETFIRST
TWAIN_32.DLL - MESSAGE - DSM --DsmEntryDiagExit (RC = 1, CC = 3)

mts 8. Jan 2022 14:37

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Mein Log hatte immer den Fehler:
Zitat:

Error: CDataSrc::IDataSr Duplicate Product Name Ignored:
Aber hinter dem Doppelpunkt sollte eigentlich ein Name stehen. Da stand aber nichts.
Bei der funktionierenden Version kam dieser Error nicht im Log vor.

venice2 8. Jan 2022 14:40

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von mts (Beitrag 1500286)
Mein Log hatte immer den Fehler:
Zitat:

Error: CDataSrc::IDataSr Duplicate Product Name Ignored:
Aber hinter dem Doppelpunkt sollte eigentlich ein Name stehen. Da stand aber nichts.
Bei der funktionierenden Version kam dieser Error nicht im Log vor.

Könnte eventuell an deiner statischen Verlinkung liegen..
Aber gut funktioniert ja jetzt.

KodeZwerg 8. Jan 2022 17:29

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von mts (Beitrag 1500243)

Code:
  _Handle := LoadLibrary('c:\Windows\twain_32.dll');

ist sichergestellt das diese datei immer an diesem ort zu finden ist?

himitsu 8. Jan 2022 19:11

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
In Win95 war sie schon dort.

Die 16 Bit-Variante heißt wohl twain.dll (jedenfalls sah ich vorhin in Win95 die twain.dll und twain_32.dll an jener Stelle)
aber wo 64-Bit ist ... k.A.


Und System-DLLs ruft man niemals mit absolutem Pfad auf.

Wegen soeinem Scheiß war Microsoft auf die Idee gekommen, dass die Systempartition immer C: heißt, weil zuviele alte schrottige Programme mit hartcodierten Pfaden daherkamen.

KodeZwerg 8. Jan 2022 20:21

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von himitsu (Beitrag 1500298)
Und System-DLLs ruft man niemals mit absolutem Pfad auf.

Darauf wollte ich hinaus, obwohl es daran nicht liegen kann, denke ich mal.

mts 8. Jan 2022 22:19

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Diese vereinfachte Methode mit statischer Verlinkung und fixem Pfad habe ich nur für dieses Forum geschrieben um das Problem auf wenige Zeilen einzuschränken…

Die Win64 Dll heißt entsprechend anders.
Nutze jetzt einfach wieder die DelphiTwain.pas von Kluug.

Bin jetzt erst mal froh dass alles wieder läuft. Nach wie vor finde ich das alles sehr seltsam.

P.S. hatte es auch via c++ probiert (msvc 2017), da lief es auch.

TurboMagic 9. Jan 2022 08:48

AW: DelphiTwain findet keine Geräte in Delphi 10.1 - in XE4 alles ok
 
Zitat:

Zitat von mts (Beitrag 1500273)
@Delphi.Narium:

1) In dem von mir hochgeladenen code nutze ich kein GetProcAddress mehr. Habe die Funktion statisch verlinkt.
2) In beiden fällen läuft meine Anwendung bis unten durch (kein vorzeitiges exit)
3) resI = 0 > Scanner gefunden
resI = 1 > nichts gefunden.

Im Anhang mal beide bei mir kompilierten Versionen... Jetzt bin ich mal sehr gespannt ob die bei euch beide ResI = 0 ausgeben...

Habe mal die D10.1 Version gestartet und die liefert auch 0 zurück.


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