hi,
vielen dank. das mit dem byte und cardinal ist mir auch aufgefallen
ich hab jetzt noch die variablen der funktion alle "normal" deklariert, d.h. ohne prefix. dann hab ich noch pCardParameters durch @CardParameters ersetzt.
jetzt funktionierts - wenn auch merkwürdig. wenn ich z.b. hinschreibe
Delphi-Quellcode:
rc := SCardI2CInit(hCard, @CardParameters, lType);
If rc <> 0 Then
begin
edit1.Text := ('error');
exit;
end;
dann bricht er jedes mal ab.
wenn ich aber schreib
Delphi-Quellcode:
rc := SCardI2CInit(hCard, @CardParameters, lType);
inttostr(rc);
If rc <> 0 Then
begin
edit1.Text := ('error');
exit;
end;
funktionierts (fast) immer. wenn ich bei der funktion anstatt stdcall "safecall" angeb dann sagt er bei der ersten variante dasses ein safecall fehler gab und bei der version unten gibts kein fehler.
ich hab jetzt mal noch eine combobox eingefügt und wie beim vb beispiel noch so viele if..then sachen davpr gemacht wo er dem lType den wert zuweist. jetzt funktionierts immer. dennoch ärgerlich dass ich nicht weis worans liegt.
ps: ich habs "alte" vb drauf glaub. also halt visual studio 6.
Zitat:
[..]und ein long [ist] 32-bitig und damit ein Integer
hm aber ein integer ist doch signiert? und ein long doch nicht oder? (cardinal ist ja auch unsigniert)