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.