unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit2, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; ButtonStopThread: TButton; ListBox1: TListBox; procedure ButtonStopThreadClick(Sender: TObject); procedure Button1Click(Sender: TObject); private public { Déclarations publiques } end; var Form1: TForm1; UnThread:TUnThread; implementation {$R *.DFM} procedure TForm1.ButtonStopThreadClick(Sender: TObject); begin if Assigned(UnThread) then UnThread.Terminate; end; procedure TForm1.Button1Click(Sender: TObject); begin UnThread:=TUnThread.Create(True); { True : création suspendue – il ne s'exécute pas encore } UnThread.FreeOnTerminate:=True;//on veut une destruction automatique après exécution. UnThread.Priority:= tpNormal; UnThread.Resume; end; end.
unit Unit2; interface uses Classes, Sysutils, TypInfo, Forms; type TUnThread = class(TThread) private protected procedure Execute; override; procedure Action; end; implementation uses Unit1, CurrencyConvertor; procedure TUnThread.Action; var ws: CurrencyConvertorSoap; Str1: String; int1: Integer; Dou1: Double; begin //Form1.LabelThread.Caption := IntToStr(Compteur); Ws := GetCurrencyConvertorSoap; for Int1 := 0 to ord(High(Currency)) do begin Str1 := GetEnumName(TypeInfo(Currency), integer(Int1)); try Dou1 := Ws.ConversionRate(USD, Currency(int1)); except Dou1 := 0; end; Form1.Listbox1.Items.Add(Str1 + ' - ' +FloatToStr(Dou1)); end; end; procedure TUnThread.Execute; begin Synchronize(Action); end; end.
unit CurrencyConvertor; interface uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns; type Currency = ( AFA, ALL, DZD, ARS, AWG, AUD, BSD, BHD, BDT, BBD, BZD, BMD, BTN, BOB, BWP, BRL, GBP, BND, BIF, XOF, XAF, KHR, CAD, CVE, KYD, CLP, CNY, COP, KMF, CRC, HRK, CUP, CYP, CZK, DKK, DJF, DOP, XCD, EGP, SVC, EEK, ETB, EUR, FKP, GMD, GHC, GIP, XAU, GTQ, GNF, GYD, HTG, HNL, HKD, HUF, ISK, INR, IDR, IQD, ILS, JMD, JPY, JOD, KZT, KES, KRW, KWD, LAK, LVL, LBP, LSL, LRD, LYD, LTL, MOP, MKD, MGF, MWK, MYR, MVR, MTL, MRO, MUR, MXN, MDL, MNT, MAD, MZM, MMK, NAD, NPR, ANG, NZD, NIO, NGN, KPW, NOK, OMR, XPF, PKR, XPD, PAB, PGK, PYG, PEN, PHP, XPT, PLN, QAR, ROL, RUB, WST, STD, SAR, SCR, SLL, XAG, SGD, SKK, SIT, SBD, SOS, ZAR, LKR, SHP, SDD, SRG, SZL, SEK, CHF, SYP, TWD, TZS, THB, TOP, TTD, TND, TRL, USD, AED, UGX, UAH, UYU, VUV, VEB, VND, YER, YUM, ZMK, ZWD, TRY_ ); // ************************************************************************ // // Namespace : http://www.webserviceX.NET/ // soapAction: http://www.webserviceX.NET/ConversionRate // transport : http://schemas.xmlsoap.org/soap/http // style : document // binding : CurrencyConvertorSoap // service : CurrencyConvertor // port : CurrencyConvertorSoap // URL : http://www.webservicex.net/CurrencyConvertor.asmx // ************************************************************************ // CurrencyConvertorSoap = interface(IInvokable) ['{A1817D10-F9A2-B6F6-30E2-8FFB22ABBD60}'] function ConversionRate(const FromCurrency: Currency; const ToCurrency: Currency): Double; stdcall; end; function GetCurrencyConvertorSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): CurrencyConvertorSoap; implementation function GetCurrencyConvertorSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): CurrencyConvertorSoap; const defWSDL = 'http://www.webservicex.net/CurrencyConvertor.asmx?wsdl'; defURL = 'http://www.webservicex.net/CurrencyConvertor.asmx'; defSvc = 'CurrencyConvertor'; defPrt = 'CurrencyConvertorSoap'; var RIO: THTTPRIO; begin Result := nil; if (Addr = '') then begin if UseWSDL then Addr := defWSDL else Addr := defURL; end; if HTTPRIO = nil then RIO := THTTPRIO.Create(nil) else RIO := HTTPRIO; try Result := (RIO as CurrencyConvertorSoap); if UseWSDL then begin RIO.WSDLLocation := Addr; RIO.Service := defSvc; RIO.Port := defPrt; end else RIO.URL := Addr; finally if (Result nil) and (HTTPRIO nil) then RIO.Free; end; end; initialization InvRegistry.RegisterInterface(TypeInfo(CurrencyConvertorSoap), 'http://www.webserviceX.NET/', 'utf-8'); InvRegistry.RegisterDefaultSOAPAction(TypeInfo(CurrencyConvertorSoap), 'http://www.webserviceX.NET/ConversionRate'); InvRegistry.RegisterInvokeOptions(TypeInfo(CurrencyConvertorSoap), ioDocument); RemClassRegistry.RegisterXSInfo(TypeInfo(Currency), 'http://www.webserviceX.NET/', 'Currency'); RemClassRegistry.RegisterExternalPropName(TypeInfo(Currency), 'TRY_', 'TRY'); end.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question