[原创] 分布式系统框架搭建 PartThree-Delphi 露脸

ABFramework文檔與基礎包源碼.rar 立即下载
我们的WebService 做成了,调用也成功了 .net 调用 .net 的东西很容易,但是我个人很不喜欢微软。写WebService 有很多可以实现 java delphi  ruby 等..客户端也是。根据实际情况,选择即可!但是在桌面客户端的话,我比较偏向与Delphi.桌面客户端谁也不愿意背着个.net freamwork 到处跑!接下来玩点有意思的,使用.net 的Web Service 并用Delphi 来实现Web Service 的调用!现在我想使用 Delphi 来调用WebService 又该如何了? Delphi 调用WEbService 的方法倒是简单,但是用delphi 调用 .net 返回的数据集又如何? 随我来,我来揭开谜底。

开启Delphi 新建一个VCL application,再添加一个WSDL importer



填写如 URL
还是和刚才 wsdl.exe 哪里的 URL 一样!!
http://localhost:2387/WebService/Service.asmx?wsdl
点击 Finish 生成 webservice 接口


finish 结束


在窗体上添加 如下控件TclientDataSet、THTTPRIO 、TXMLTransformProvider
TdataSource 、TDBGrid

设置属性

DBGrid1
DataSource 指向DataSource1

DataSource1
DataSet 指向ClientDataSet1

ClientDataSet1
providername 指向XMLTransformProvider1

HTTPRIO1
Port 设置  ServiceSoap
Service 设置Service
WSDLLOcation 设置 http://localhost:2387/WebService/Service.asmx?wsdl

代码为
uses Service; //使用刚才生成的接口
procedure TForm1.BitBtn1Click(Sender: TObject);
var
IntRes:Integer;
StrRes:String;
begin
   (HTTPRIO1 as ServiceSoap).GetDataSet('Select * From Customers')
{
//注释了,几个webService 的测试函数
IntRes:=(HTTPRIO1 as ServiceSoap).Add(1,2);
StrRes:=(HTTPRIO1 as ServiceSoap).HelloWorld('Cool');
SHowMessage(IntToStr(IntRes));
ShowMessage(StrRes);
}
end;

procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string;
  SOAPResponse: TStream);
  var
   XMLDoc: IXMLDocument;

begin
SOAPResponse.Position := 0;
//读入soap 到memo1中
  Memo1.Lines.LoadFromStream(SOAPResponse);
  SOAPResponse.Position := 0;

end;
运行一下,获取解析出来XML数据




把Memo1 内容复制出来保存为XML 文件,这里保存为RawData.xml 文件,OK 使用Delphi 的XML Mapper 映射XML


选择好列以后,选择 File -> Save ->Transformation, 保存为 ToDp.xtr
注意这里有个bug还是什么 Delphi 不知道SOAP 的名称空间 所以预览数据还是空的!我们一下手工修复一下,
我用的是Delphi 10 不知道Delphi 2009 如何?使用记事本打开刚才生成的ToDp.xtr 文件第一行位置
<SelectEach dest="DATAPACKET/ROWDATA/ROW" from="/soap:Envelope/soap:Body/....">
   [修改为]
<SelectEach dest="DATAPACKET/ROWDATA/ROW" from="/Envelope/soap:Body/....">
OK!
接下来,回到 Delphi 里面修改TXMLTransformProvider 属性
TransformRead.TransformationFile 为刚才的 xtr 文件这里我的是
D:/My Documents/Borland Studio Projects/ToDp.xtr
现在还要修改代码,直接从解析的 XML 转成 DataSet 格式只用修正HTTPRIO1AfterExecute 事件为
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: string;
  SOAPResponse: TStream);
  var
   XMLDoc: IXMLDocument;
begin
  SOAPResponse.Position := 0;
  Memo1.Lines.LoadFromStream(SOAPResponse);
  ClientDataset1.Active := FALSE;
  SOAPResponse.Position := 0;
  XMLDoc := NewXMLDocument;
  XMLDoc.Encoding := 'GB2312';
  SOAPResponse.Position := 0;
  XMLDoc.LoadFromStream(SOAPResponse);
  XMLTransformProvider1.TransformRead.SourceXmlDocument := XMLDoc.GetDOMDocument;
  ClientDataset1.Active := TRUE;
end;
注意单元的引用读 XML 需要 uses XMLIntf,XMLDoc; F9 运行一下!
呵呵 ~ 成功!

运行速度不错!
拯救我的老平板三星note8.0 table(GT-N5110)升级到lineage os-14.1(android7.1)全记录 买了多年的三星平板note8.0已经闲置了一段时间,今天在家不能出门,也没啥事,就把它拿出来刷新系统。不成想居然搞了一天,还差点变成了砖。 原版的系统是安卓4.0的系统,很多软件已经不能用了,微信、优酷都不支持,而且三星也不提供更新升级,于是寻求第三方解决方案。折腾过程一波三折,就不赘述了,我就讲一下正确的操作过程吧。 切记我这里讲的过程只针对三星note8.0 table,国行版本,版本号是... 阅读详情

相关推荐

gmsv源代码c语言,石器时代ABLua的原理、简介、过程、运用、收发

操作原理(一)服务端:服务器源文件客户端:客户所操作的程序(既是游戏客户端)接口:既是某项功能(例如:鼠标点击,文字发送,战斗,观战,人物动作等)返回的值ABlua:在源代码中添加的整套引擎作为回调接口--lua所实现的功能是基于服务端源码添加的接口由该接口与客户端发送封包实现功能源码里是否有ABlua回调接口?例如:源码里的gmsv/battle.c文件(既是战斗回调文件)以下为简单描述C给予l...

weixin_35223575的博客 2408

delphi企业级分布式架构多层,数据库、应用服务器、客户端分布不同设备,自定义:主(28*200矩阵)从表(17*1024加中文计算字段加分页,客户端一次性请求,服务端同时响应返回数据,高效只需2秒

delphi商用企业级计算,分布式架构多层,数据库、应用服务器、客户端分布于不同设备,自定义:主(28*200矩阵)从表(17*1024加中文计算字段加分页,客户端一次性请求,服务端同时响应返回数据,高效只需2秒 一、结果图: 二、关键技术: -- 主表、从表、从从表:必须: -- 1、主表分页条件 -- 2、各自产生自己的临时表 -- 3、排序条件:必须格式转化,否则可能主从表查询结果...

pulledup的博客 571

密码学小白必看:三大顶级会议论文下载与阅读指南(附完整资源链接)

本文为密码学初学者提供了系统获取和阅读三大顶级会议(Crypto、Eurocrypt、Asiacrypt)论文的实战指南。详细介绍了通过IACR官方渠道、ePrint预印本等权威资源免费下载论文的方法,并分享了高效筛选、精读核心章节及构建个人知识体系的具体策略,帮助读者快速切入密码学研究前沿。

weixin_28363123的博客 389

delphi源代码三层框架【框架简介】

delphi 三层 中间件 源码 框架

173713873 4460

微信H5网页授权通用方案:中转页破解域名限制,适配Hash/History路由

在Web开发中,OAuth 2.0授权码模式是实现第三方登录的通用标准,其核心原理是通过授权服务器颁发临时代码,再由客户端交换访问令牌。这一机制在微信公众号H5开发中尤为重要,用于安全获取用户身份。然而,微信平台对网页授权回调域名有严格的数量限制,这成为多子域名、多环境及微前端架构下业务扩展的主要瓶颈。其技术价值在于通过设计一个统一的中转授权页,将授权逻辑与业务逻辑解耦,让所有业务页面共享一个已配置的授权入口,从而突破域名配额限制。该方案的关键在于适配不同的前端路由模式,需精准处理Hash模式与Histor

weixin_42533120的博客 318

告别环境依赖!用PyInstaller把PaddleOCR项目打包成独立EXE(附完整spec文件配置)

本文详细介绍了如何使用PyInstaller将PaddleOCR项目打包成独立EXE文件,彻底解决Python环境依赖问题。通过完整的spec文件配置和实战技巧,开发者可以轻松创建开箱即用的OCR工具,特别适合需要交付给非技术用户的场景。文章涵盖环境配置、模型打包、性能优化等关键环节,并提供了解决常见问题的方案。

weixin_33712987的博客 573

Delphi常用多层框架介绍(转)

转自:http://www.cnblogs.com/xalion/archive/2012/01/18/2325418.html 目前在delphi 开发多层应用的框架基本上集中在以下几种,每种开发框架都有自己的优缺点,没有最好的,大家可以根据 自己的实际需求选择相应框架,我把我本人在使用几种框架的体会与大家分享一下。如有不对之处,可以拍砖。 1. DELPHI 自身提供...

518

MIPI D-PHY TX 一致性测试实例解析 Part 03

本文之前,已经讨论了MIPI D-PHY TX的1.3.x和1.4.x的测试项,1.5.x的测试项相对较少,主要是用于时钟和数据通道相关的时序测量

一只豌豆象的博客 5184

Delphi通用插件框架

近期打算抽时间看点OO,UML的书,电脑里的martin fowler的5本书一直没怎么看过,学编程这么多年,其实水平一直不高,工作性质是一个原因,做一个古董系统的维护工作,不如那些一年到头在外做项目的有提高.反过来想,也许是个机会去重新写一个系统,可是2年来,我还是没能写出这个新系统.最近终于做成了一点事情,就是做了一个Delphi的DLL插件式框架,把原本各自独立的20个Delphi客户端

jackhatedance的专栏 5318

DO-254标准详解:航空电子硬件设计保证指南全方位解析

RTCA DO-254, 也被称为《机载电子硬件设计保证指南》,是航空电子硬件设计和验证中的关键标准,旨在为确保机载电子硬件的安全性提供设计保证。自2000年首次发布以来,DO-254就成为了民航和军用飞机中电子硬件设计认证的基准文件。随着航空硬件技术的进步和日益复杂化,确保硬件设计的准确性、可靠性和安全性变得至关重要。本标准是由RTCA和EUROCAE共同开发的,适用于涉及机载硬件的航空公司、飞机制造商、供应商和认证机构。

qq_41854911的博客 3682

软考中级-软件设计师 23种设计模式(最详细解析!!)

软考中级-软件设计师 23种设计模式

片言可决讼,半纸能缚龙 2万+

TClientDataSet[28]: 读写其他格式的 XML 文件

TClientDataSet 可以直接存取的 XML 有自己的格式规范, 存取其他格式 XML 需要相应的映射文件(*.xtr). 这种 *.xtr 文件是用 XML Mapper(Delphi 自带, 可从开始菜单或 IDE -&gt; Tools 启动)制作的. 一般会需要两个 *.xtr 文件, 一个用于读取(例子中是: ToDp.xtr), 一个用于写入(例子中是: ToX...

weixin_34144848的博客 134

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

共轭梯度法的核心原理是求解优化问题的共轭向量组作为优化方向,由于优化方向间彼此正交,故每次迭代只需沿着一个方向寻优而互不影响。本文设计基于ESDF的障碍约束、曲率约束和平滑约束,基于ROS C++和Python提供了共轭梯度法的轨迹优化实践案例

FRIGIDWINTER的博客 1万+

DelPhi基础(一)程序框架和文件结构

1 Delphi程序的基本结构1.1 项目和项目文件Delphi中,应用程序的所有相关文件都被组织在一个 项目中,每个项目包含的文件很多,大部分是由Delphi 自 动创建并维护的。 每一个Delphi应用程序都有一个扩展名为dpr的项目 文件,是由Delphi 自动建立并维护的,一般情况下不必修 改它的内容 缺省生成的项目源文件代码如下:

程序员の墨梅 1773

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

delphi 中如何调用webservice返回dataset 数据集

We're nearly there. Drop a TClientDataset, a TXMLTransformProvider and a TDatasource on the form. Here's what the form looks like now:Link t

忆尘 5010

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

使用delphi 开发多层应用(三)Delphi常用多层框架介绍

目前在delphi 开发多层应用的框架基本上集中在以下几种,每种开发框架都有自己的优缺点,没有最好的,大家可以根据 自己的实际需求选择相应框架,我把我本人在使用几种框架的体会与大家分享一下。如有不对之处,可以拍砖。 1. DELPHI 自身提供的DataSnap 从delphi 3 开始,delphi 自身就开始支持多层开发,后期的版本逐步加强三层开发功能,在d...

weixin_30375247的博客 651

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

delphi 通过 TXMLTransformProvider 或 TXMLTransform 都可以让 TClientDataSet 读写此 XML

TClientDataSet 可以直接存取的 XML 有自己的格式规范, 存取其他格式 XML 需要相应的映射文件(*.xtr).这种 *.xtr 文件是用 XML Mapper(Delphi 自带, 可从开始菜单或 IDE -> Tools 启动)制作的.一般会需要两个 *.xtr 文件, 一个用于读取(例子中是: ToDp.xtr), 一个用于写入(例子中是: ToXml.xtr).可以通过 *.xtr 文件只读写源 XML 中的部分数据, 如果读取过于复杂的 XML 会生成嵌套的 DataSet

862

我在delphi7下调用微软的Web Services的心得.(其中服务是指返回数据集)

  我在delphi7下调用微软的Web Services的心得.(其中服务是指返回数据集)        作者:cowbird                 日期:20040619       本来是想写一篇文章,用来表达我对delphi7下调用web services的失望,因为尝试了不少时间,怎么也不能实现用delphi7调用dotnet下的返回数据集的web服务。        今天做了...

weixin_34391445的博客 244

XMLTransformProvider

XMLTransformProvider1  XMLTransformProvider1.TransformRead.SourceXmlDocument := XMLDoc.GetDOMDocument; ClientDataset1.Active := TRUE

weixin_33881753的博客 225

Delphi Web应用开发B/S框架推荐:《Delphi Web前端开发教程——基于TMS WEB Core框架》

使用Delphi TMS WEB Core 发现软件开发的无限可能性…… 二十多年来,开发环境 Delphi 以对 Windows 应用程序的快速可视化编程而闻名。尤其是桌面数据库应用程序的轻松创建和将应用程序部署到客户系统的简单性,使得 Delphi 与其他编程语言相比更受程序员欢迎。 2022年发布的Delphi 11.1可以为目标平台 Linux、MacOS 以及移动操作系统 iOS 和 Android 构建软件,以及开发响应式网页(表单设计器、HTML、CSS、Bootstrap)。

Delphi开发局QQ群:32422310 7864

Delphi7 的 WebService 与 数据库

Server 端:SoapDataModule中加入 ADOConnection1、ADODataSet1、DataSetProvider1;DataSetProvider1的DataSet设置为ADODataSet1;ADODataSet1的CommandText设置为空,Connection设置为ADOConnection1。DataSetProvider1的DataRequest事件:f

迷茫 2943

Delphi编写WebService

Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口   TReomtable: WebService中自定义类都是继承自该类 TSOAPAttachment: Attachment:附件,一种流类型,可以返回流数据 CGI:(EXE)   ISAPI:(DLL) Base64编码: uses EncdDecd; s := EncodeString(s);

lxllovely的专栏 1348
上一篇: [原创] 分布式系统框架搭建 PartTwo-WebService
下一篇: CodeGear.Delphi.for.PHP 2.1.0.1083 最新版本(包含破解)
Sliphades
博客等级 码龄20年 244粉丝 38原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值