Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TSmartCard für Delphi 2010 (https://www.delphipraxis.net/160217-tsmartcard-fuer-delphi-2010-a.html)

hoika 3. Mai 2011 08:56

TSmartCard für Delphi 2010
 
Hallo #,

bei der Umstellung eines D7-Programmes habe ich ein Problem.
Das Programm verwendet die Komponente TSmartCard.
Ich habe jetzt die Pas-Quellen (scardcmp.inc) von String auf AnsiString, PChar PAnsiChar geändert.
Trotzdem stürzt das Programm beim Beenden des Forms, welches die TSmartCard verwendet ab.

Es scheint also doch noch Probleme zu geben.

Bei Towotoko finde ich keine D2010 kompatible Version ... ;(

Was nun ?


Schon mal im voraus Danke für Anregungen/Hilfe.


Heiko

Deep-Sea 3. Mai 2011 09:05

AW: TSmartCard für Delphi 2010
 
Und sonst funktioniert alles?!
Ich hab nämlich für D2009 u.a. noch folgende Funktionen angepasst:
Delphi-Quellcode:
function TSmartCard.ComandStr(const Cmd,DataIn: AnsiString): AnsiString;
begin
  if DataIn = '' then
  begin
    SetLength(Result, 255);
    SetLength(Result, Comand(Cmd,nil,0,@Result[1], Length(Result)));
  end else begin
    SetLength(Result, 255);
    SetLength(Result, Comand(Cmd,@DataIn[1],Length(DataIn),@Result[1], Length(Result)));
  end;
end;

function TSmartCard.Comand(const Cmd: AnsiString;
                            DataIn: Pointer; DataInLen: LongInt;
                            DataOut: Pointer; DataOutMax: LongInt
                            ): LongInt;
var R,L,M: LongInt; C: AnsiString;
begin
  try
    Result:=DataOutMax;
    if not FActive then Error('SmartCard component not activated');
    L:=Length(Cmd);
    if L = 0 then
      R:=FSCardComand(FTDevHandle,nil,L,
                      DataIn,DataInLen,DataOut,Result)
    else
      R:=FSCardComand(FTDevHandle,@Cmd[1],L,
                      DataIn,DataInLen,DataOut,Result);
    if R > 0 then begin
      Result:=0;
      C:=cmSystem+cmInfo+cmErrText;
      L:=Length(C);
      M:=0;
      SetLength(FError, 255);
      R:=Length(FError);
      FSCardComand(FTDevHandle,@C[1],L,nil,M,@FError[1],R);
      SetLength(FError, R);
      Error(FError);
    end;
  except
    Result:=0;
    if not (csDesigning in ComponentState) then raise;
  end;
end;
Vergleichs mal mit deinen :-D Aber ob's daran liegt weiß ich natürlich nicht ...

hoika 3. Mai 2011 10:34

AW: TSmartCard für Delphi 2010
 
Hallo,

oh ein Gleichgesinnter.
Habe das jetzt geändert.
Leider funktioniert es immer noch ;(

Beim Beenden schmiert das Formular ab.

Kannst du mir deine Inc-datei mal per PN geben ?

Danke


Heiko

hoika 3. Mai 2011 12:00

AW: TSmartCard für Delphi 2010
 
Hallo,

erledigt !!!
Musste die Komponente neuinstallieren.

1000 Dank ;)


Heiko

hoika 3. Mai 2011 12:29

AW: TSmartCard für Delphi 2010
 
Hallo,

zu früh gefreut ;(
Ist kein Lesegerät angeschlossen,
stürzt das Programm nach dem Form-Beenden ab.
Allerdings nicht in der Debug- sondern nur in der Release-Version.

Ich erzeuge die Komponente jetzt dynamisch und gebe sie erst mal nicht frei ;)


Heiko

Deep-Sea 3. Mai 2011 12:42

AW: TSmartCard für Delphi 2010
 
Mh, ich hatte auch mal ein Problem mit nicht angeschlossenem Kartenleser ... ich glaube das war, weil ich auf DeviceList zugegriffen habe, obwohl Active auf false stand - glaube ich :gruebel:
Vlt. greifst du auch auf etwas zu, was nicht existiert?!

hoika 3. Mai 2011 12:44

AW: TSmartCard für Delphi 2010
 
Hallo,

Das letzte FreeLibrary in SetActive ist der Schuldige.
Das habe ich jetzt ausgeklammert und werde mir das später ansehen.


Heiko

ConnorMcLeod 3. Mai 2011 14:08

AW: TSmartCard für Delphi 2010
 
AFAICR hatte ich vor zwei Jahren dasselbe Problem mit einem ähnlichen Workaround.

schorsch666 8. Mai 2011 18:34

AW: TSmartCard für Delphi 2010
 
Hallo. Ich suche mir seit Wochen schon die Finger wund, weil ich genau das selbe Problem habe. Setze mehrere SCR335 ein und nutzte bisher TSmartCard. Nun setze ich Delphi XE ein und bekomme es nicht gebacken :roll:

Kann mir vielleicht jemand einen Link (oder auch gerne per Mail) posten, wo ich mir mal eine funktionierende Version ziehen kann?

Wäre echt supermega..!

Tks vorab..

Schorsch

schorsch666 8. Mai 2011 19:29

AW: TSmartCard für Delphi 2010
 
Nochmal ich,
ich habe jetzt mal versucht die Kompo umzustellen, wie hier weiter oben beschrieben.

Aber in der function: SetActive - meckert er mir folgende Zeilen an:

if FileSearch(StrPas(@DllFile[1]), ExtractFilePath(ParamStr(0))+'\;'+S+';'+T) <> '' then

(Doppeldeutiger oder überladener Aufruf von "StrPas")
..
Error('Invalid/missing SmartCard library '+StrPas(@DllFile[1])+
' (Error code '+IntToStr(FLibHandle)+')'+#13#10+
'Pls. download latest version at: http://www.towitoko.de');

(Doppeldeutiger oder überladener Aufruf von "StrPas")
..
Error('Invalid SmartCard library '+StrPas(@DllFile[1])+
' (version mismatch)'+#13#10+
'Pls. download latest version at: http://www.towitoko.de');

(Doppeldeutiger oder überladener Aufruf von "StrPas")

Hat da vielleicht jemand ne Idee? Obwohl ne aktuelle, lauffähige Kompo wäre natürlich was ;-)

Tks vorab und schönes Restwochenende..

Schorsch


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 Uhr.
Seite 1 von 4  1 23     Letzte »    

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