![]() |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
Bitte poste Deinen Code. |
AW: PayPal SOAP Konto Bewegungen abfragen
Delphi-Quellcode:
Fehlermeldung [DCC Fehler] Unit2.pas(83): E2010 Inkompatible Typen: 'Integer' und 'CurrencyCodeType'
D_VT1.FieldByName('GrossAmountcurrencyID').Text:=GetEnumName(TypeInfo(CurrencyCodeType),Response.PaymentTransactions[i].NetAmount.currencyID);
Hier nochmal der Code vom RTTI...
Delphi-Quellcode:
TRttiEnumerationType = class(TRttiOrdinalType)
private function GetMaxValue: Longint; override; function GetMinValue: Longint; override; function GetUnderlyingType: TRttiType; constructor Create(APackage: TRttiPackage; AParent: TRttiObject; var P: PByte); override; {$HINTS OFF} function GetNames: TArray<string>; class function GetName<T{: enum}>(AValue: T): string; reintroduce; static; class function GetValue<T{: enum}>(const AName: string): T; static; {$HINTS ON} public property UnderlyingType: TRttiType read GetUnderlyingType; end; |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
![]() Das Beispiel für
Delphi-Quellcode:
in dem von @TiGü genannten Blogpost ist tatsächlich fehlerhaft.
GetEnumName
(Aber mal ernsthaft: Da hätte man auf Grund der Fehlermeldung des Compilers aber auch durchaus drauf kommen können...) |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
|
AW: PayPal SOAP Konto Bewegungen abfragen
So jetzt habe ich die Gesamte Lösung
Delphi-Quellcode:
Var
client : PayPalAPIInterface; credentials : RequesterCredentials; trans : TransactionSearchReq; UserID : UserIdPasswordType; trans1 : TransactionSearchRequest; Response : TransactionSearchResponse; i : Longint; begin HTTPRIO1.URL:='https://api-3t.paypal.com/2.0/'; client:=(HTTPRIO1 as PayPalAPIInterface); credentials:=RequesterCredentials.Create; UserID:=UserIdPasswordType.Create; UserID.Username:=''; UserID.Password:=''; UserID.Signature:=''; credentials.Credentials:=UserID; HTTPRIO1.SOAPHeaders.Send(credentials); trans1:=TransactionSearchRequest.Create; trans:=TransactionSearchReq.Create; trans1.StartDate:=TXSDateTime.Create; trans1.Version:='94.0'; trans1.StartDate.AsDateTime:=Now-10; trans.TransactionSearchRequest:=trans1; Response:=client.TransactionSearch(trans); D_VT1.Open; D_VT1.Clear; For i:=Low(Response.PaymentTransactions) To High(Response.PaymentTransactions) do Begin D_VT1.Append; D_VT1.FieldByName('timestamp').AsDateTime:=Response.PaymentTransactions[i].Timestamp.AsDateTime; D_VT1.FieldByName('type').Text:=Response.PaymentTransactions[i].Type_; D_VT1.FieldByName('payer').Text:=Response.PaymentTransactions[i].Payer; D_VT1.FieldByName('payerdisplayname').Text:=Response.PaymentTransactions[i].PayerDisplayName; D_VT1.FieldByName('TransactionID').Text:=Response.PaymentTransactions[i].TransactionID; D_VT1.FieldByName('Status').Text:=Response.PaymentTransactions[i].Status; D_VT1.FieldByName('GrossAmount').Text:=StringReplace(Response.PaymentTransactions[i].GrossAmount.Text,'.',',',[]); D_VT1.FieldByName('FeeAmount').Text:=StringReplace(Response.PaymentTransactions[i].FeeAmount.Text,'.',',',[]); D_VT1.FieldByName('NetAmount').Text:=StringReplace(Response.PaymentTransactions[i].NetAmount.Text,'.',',',[]); D_VT1.FieldByName('GrossAmountcurrencyID').Text:=GetEnumName(TypeInfo(CurrencyCodeType),Integer(Response.PaymentTransactions[i].GrossAmount.currencyID)); D_VT1.FieldByName('FeeAmountcurrencyID').Text:=GetEnumName(TypeInfo(CurrencyCodeType),Integer(Response.PaymentTransactions[i].FeeAmount.currencyID)); D_VT1.FieldByName('NetAmountcurrencyID').Text:=GetEnumName(TypeInfo(CurrencyCodeType),Integer(Response.PaymentTransactions[i].NetAmount.currencyID)); D_VT1.Post; End; D_VT1.SaveToXML('t1.xml'); D_VT1.Close; |
AW: PayPal SOAP Konto Bewegungen abfragen
GetName ... Wozu auch, gibt ja das Property Name? :roll:
Und natürlich will es einen Integer, da man sonst millionen Überladungen für jeden Enumtypen bräuchte. ![]() |
AW: PayPal SOAP Konto Bewegungen abfragen
Zitat:
Sonst nimmt er die private function GetName aus der Basisklasse TRttiType. Es ist eine wiedereingeführte generische Klassenfunktion.
Delphi-Quellcode:
uses
System.Rtti; ... var str : string; begin str := TRttiEnumerationType.GetName<CurrencyCodeType>(Response.PaymentTransactions[i].NetAmount.currencyID); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 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