![]() |
Problem mit Scannen über delphitwain
Hallo ich möchte mit diesem Code ein Bild einscannen und in eine Datenbank ablegen
Delphi-Quellcode:
Er scannt nur das dbimage1 bleibt leer. woran kann das liegen
procedure TForm1.DelphiTwain1TwainAcquire(Sender: TObject;
const Index: Integer; Image: TBitmap; var Cancel: Boolean); begin clientdataset1.FieldByName('personalausweishinten').Assign(image); Cancel := TRUE; {Only want one image} end; procedure TForm1.Button1Click(Sender: TObject); var SelectedSource: Integer; begin {It is always recommended to load library dynamically, never forcing} {final user to have twain installed} if delphiTwain1.LoadLibrary then begin {Load source manager} delphiTwain1.SourceManagerLoaded := TRUE; {Allow user to select source} SelectedSource := delphiTwain1.SelectSource; if SelectedSource <> -1 then begin {Load source, select transference method and enable (display interface)} delphiTwain1.Source[SelectedSource].Loaded := TRUE; delphiTwain1.Source[SelectedSource].TransferMode := ttmMemory; delphiTwain1.Source[SelectedSource].Enabled := TRUE; end {if SelectedSource <> -1} end else showmessage('Twain is not installed.'); end; |
AW: Problem mit Scannen über delphitwain
Beim Speichern von Bildern in eine DB empfiehlt sich die Verwendung eines Streams (Memorystream).
Außerdem solltest Du Dir überlegen, ob das Bild im Bitmap-Format oder doch lieber z.B. im JPG-Format in die DB gespeichert werden soll. Gruß Guido R. |
AW: Problem mit Scannen über delphitwain
er liest es nicht einmal in ein einfaches Timage
Hier mal der code dazu
Delphi-Quellcode:
wo ist der fehler ? er scannt und will auch die datei einladen aber die image compo bleibt leer
procedure TForm1.Button1Click(Sender: TObject);
var SelectedSource: Integer; begin {It is always recommended to load library dynamically, never forcing} {final user to have twain installed} if delphiTwain1.LoadLibrary then begin {Load source manager} delphiTwain1.SourceManagerLoaded := TRUE; {Allow user to select source} SelectedSource := delphiTwain1.SelectSource; if SelectedSource <> -1 then begin {Load source, select transference method and enable (display interface)} delphiTwain1.Source[SelectedSource].Loaded := TRUE; delphiTwain1.Source[SelectedSource].TransferMode := ttmMemory; delphiTwain1.Source[SelectedSource].Enabled := TRUE; end {if SelectedSource <> -1} end else showmessage('Twain is not installed.'); end; procedure TForm1.DelphiTwain1TwainAcquire(Sender: TObject; const Index: Integer; Image: TBitmap; var Cancel: Boolean); begin Image1.Picture.Assign(image); Cancel := TRUE; {Only want one image} end; |
AW: Problem mit Scannen über delphitwain
Speicher das image doch mal auf die Platte und lies es mit einem Paint-Programm ein...
|
AW: Problem mit Scannen über delphitwain
wie mache ich das
|
AW: Problem mit Scannen über delphitwain
Der Parameter Image ist doch vom Typ TBitmap, welches eine SaveToFile-Methode besitzt.
|
AW: Problem mit Scannen über delphitwain
So
Delphi-Quellcode:
geht es auch nicht?
Image1.Picture.Bitmap.Assign(image);
|
AW: Problem mit Scannen über delphitwain
Zitat:
|
AW: Problem mit Scannen über delphitwain
Das DelphiTwain von
![]() |
AW: Problem mit Scannen über delphitwain
danke jens01 daran hats gelegen
;) |
AW: Problem mit Scannen über delphitwain
Liste der Anhänge anzeigen (Anzahl: 1)
So nun mehr habe ich ein neues Problem.
Das Scannen klappt und er speichert es auch in eine Datenbank ab siehe Code.
Delphi-Quellcode:
Jedoch wenn ich mein Programm beende meldet er folgendes siehe Bild.
procedure TForm1.TwainTwainAcquire(Sender: TObject; const Index: Integer;
Image: TBitmap; var Cancel: Boolean); begin clientdataset1.Fieldbyname('Bild').Assign(Image); Cancel := True;//Only want one image end; procedure TForm1.DoDestroy; begin Twain.Free;//Don't forget to free Twain! //inherited; end; procedure TForm1.Button1Click(Sender: TObject); begin clientdataset1.Insert; //Create Twain if Twain = nil then begin Twain := TDelphiTwain.Create; Twain.OnTwainAcquire := TwainTwainAcquire; end; //Load Twain Library dynamically if Twain.LoadLibrary then begin //Load source manager Twain.SourceManagerLoaded := TRUE; //Allow user to select source -> only the first time if not Assigned(Twain.SelectedSource) then Twain.SelectSource; if Assigned(Twain.SelectedSource) then begin //Load source, select transference method and enable (display interface)} Twain.SelectedSource.Loaded := TRUE; Twain.SelectedSource.ShowUI := TRUE;//display interface Twain.SelectedSource.Enabled := True; end; end else begin ShowMessage('Twain is not installed.'); end; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin clientdataset1.Post; end; |
AW: Problem mit Scannen über delphitwain
Und wo tritt nun der Fehler auf?
Der Debugger ist ein cooles Ding und das sollte man benutzten.
Delphi-Quellcode:
procedure TForm1.DoDestroy;
begin Twain.Free;//Don't forget to free Twain! //inherited; <<<<<< WIESO? end; |
AW: Problem mit Scannen über delphitwain
das inherited habe ich wieder aktiviert aber die meldung kommt immer noch
|
AW: Problem mit Scannen über delphitwain
beim schließen des Programms
|
AW: Problem mit Scannen über delphitwain
Und wo genau beim Schließen des Programms (Zeile)?
|
AW: Problem mit Scannen über delphitwain
Liste der Anhänge anzeigen (Anzahl: 1)
er gibt mir keine zeile nur das siehe Bild
|
AW: Problem mit Scannen über delphitwain
Ich bin mir sehr sicher, daß D7 auch schon einen Stacktrace kannte.
Und dann kann man immernoch einen Haltepunkt in das DoDestroy legen und durchsteppen. |
AW: Problem mit Scannen über delphitwain
|
AW: Problem mit Scannen über delphitwain
ich glaub ich habe den Fehler
wenn ich einen breakpoint bei
Delphi-Quellcode:
dann beendet er kann es sein das er beim programm schließen twain noch mal freigeben will?
procedure TForm1.DoDestroy;
begin Twain.Free;//Don't forget to free Twain!// Hier breakpoint setze inherited; end; |
AW: Problem mit Scannen über delphitwain
Kommentier die Zeile doch einfach mal aus, dann merkst Du es.
[edit] Oder einfach so versuchen:
Delphi-Quellcode:
Wann wird die Methode denn eigentlich aufgerufen? Im FormDestroy, oder evtl. auch woanders? [/edit]
procedure TForm1.DoDestroy;
begin FreeAndNil(Twain);//Don't forget to free Twain!// Hier breakpoint setze inherited; end; |
AW: Problem mit Scannen über delphitwain
Zitat:
Wenn nicht, dann schäm dich. |
AW: Problem mit Scannen über delphitwain
Bei Twain muss man aufpassen, die DLL ist ziemlich blöd, und wenn der Wrapper die stringete 'schließen/beenden/deaktivieren' (oder wie war die Reihenfolge) nicht implizit (und freundlicherweise) im eigenen Destroy implementiert hat, muss man das selbst machen.
Mach also alle 'öffnen/aktivieren/enablen/' Aktionen in umgekehrter Reihenfolge wieder rückgängig. Im schlimmsten Fall verbessert sich die Lage nicht (aber es sieht wenigstens sauberer aus). Mit ein wenig Glück funktioniert es dann aber. PS: Das mit dem Debuggen ist so eine Sache (außer für Fortgeschrittene natürlich), wenn der Fehler -wie unschwer zu erkennen- außerhalb der VCL bzw. des schönen Exceptionhandlings auftritt. Ich jedenfalls bin nicht in der Lage, eine Fremd-DLL so einfach zu debuggen. |
AW: Problem mit Scannen über delphitwain
Im Zweifelsfall sucht man eben nicht den Fehler in der (Fremd)Komponente, sondern sucht nach dem letzten eigenem Code und schaut dort, ob man was falsch gemacht hat, bzw. wendet sich dann an den jeweiligen Support "wenn ich das aufrufe, dann ..." .
|
AW: Problem mit Scannen über delphitwain
Support ist bei Frickelkomponenten von Torry etc. so eine Sache (Falls das Twain-Teil so eine DLL ist).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 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