AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TSmartCard für Delphi 2010

Ein Thema von hoika · begonnen am 3. Mai 2011 · letzter Beitrag vom 17. Apr 2013
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

TSmartCard für Delphi 2010

  Alt 3. Mai 2011, 08:56
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#2

AW: TSmartCard für Delphi 2010

  Alt 3. Mai 2011, 09:05
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 Aber ob's daran liegt weiß ich natürlich nicht ...
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TSmartCard für Delphi 2010

  Alt 3. Mai 2011, 10:34
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
Heiko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TSmartCard für Delphi 2010

  Alt 3. Mai 2011, 12:00
Hallo,

erledigt !!!
Musste die Komponente neuinstallieren.

1000 Dank


Heiko
Heiko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: TSmartCard für Delphi 2010

  Alt 3. Mai 2011, 12:29
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
Heiko

Geändert von hoika ( 3. Mai 2011 um 12:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#6

AW: TSmartCard für Delphi 2010

  Alt 3. Mai 2011, 12:42
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
Vlt. greifst du auch auf etwas zu, was nicht existiert?!
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:20 Uhr.
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