可能是以下原因:
1、连接数据库时,直接按Ctrl F2退出导致;
2、环境配置问题,Tools->Debugger Options->Event Log页选中Windows Messages的缘故,去掉勾选;
3、某些杀毒软件的主动防御,当创建EXE文件时,“恶意行为检测”功能认为不安全。
1、首先,我们要使用Rad Studio,而不是Delphi或C++Builder来 *** 作,所以注意第一点,否则可会失败哟。如果你只装了CB或只装了Delphi,你就重装吧。
2、打开相应版本的Delphi版目录,发现有两个VirtualTreesD和VirtualTreesR两个Delphi安装包,Delphi用户那里,我们可以窃听到一个重要的信息:以R结尾的一般是运行时包,以D结尾的一般是设计期包。所以我们要先打开运行期包VirtualTreesRdpk:
3、打开项目选项(Project->Options),然后找到关键的地方:Delphi Compiler->Output-C/C++,在最右侧的C/C++ Output file generation里,选中Generate all C++ Builder files(Including package libs)选项,然后选OK关闭窗口。
4、Ctrl+F9编译项目,完成运行时包的编译。
5、重复上面的步骤打开VirtualTreesDdpk,然后修改完选项后,选择Install来安装包,然后你会幸运的得到提示,提示你组件已经安装成功了。
6、现在新建一个项目,到组件面板上找TVirtualStringTree吧。
同样的经验适用于其它绝大多数Delphi控件,比如Graphics32,但注意你可能需要对最终生成的HPP文件做一些改动,以避免与C++里自带的内容冲突,这个遇到一处改掉一处,就不再缀述了。
Annotation Problem
@Builder will ignore the initializing expression entirely If you want the initializing expression to serve as default, add @BuilderDefault If it is not supposed to be settable during building, make the field final
--
因使用了Lombok @Builder注解,成员变量的初始化表达式将会被忽略,如果希望将初始化表达式设置为默认值,使用@BuilderDefault注解,如果不希望改变属性值,使字段变为final
第1步,将中文插件chinese_chslng复制到Barts PE Builder安装文件夹的Lang文件夹中,然后运行Barts PE Builder的可执行文件Pebuilderexe,打开程序主窗口。依次单击Builder→Options菜单命令
第2步,打开Options对话框,在Language区域单击Change按钮
第3步,在打开的“打开”对话框中,选中chinese_chslng(简体中文)选项,并单击“打开”按钮
第4步,返回Options对话框,单击OK按钮。Barts PE Builder将被关闭,再次运行该程序,可以看到程序已经变成简体中文界面。在PE Builder区域中单击“来源程式”编辑框右侧的浏览按钮,
第5步,打开“浏览文件夹”对话框,选中Windows XP(SP2)系统安装程序所在的文件夹(或系统安装光盘所在的光驱盘符),并单击“确定”按钮
第6步,返回程序主窗口,选中“制作ISO映像档:(键入文件名)”单选框。然后单击右侧的浏览按钮,选择生成的ISO映像文件的保存位置,并命名ISO文件。设置完毕单击“插件”按钮
第7步,在打开的Plugins对话框中列出了Barts PE Builder V 3110a已有的插件,这些插件相当于Windows系统中的应用程序。在列表中,标有Yes的插件表明该插件能够被直接使用,而标有No 的插件则需要从相应的应用程序中提取文件来手动安装。本实例在前面的步骤中加入了一个简体中文插件,因此在插件列表中应该可以看到。确认简体中文插件已经被启用,单击“关闭”按钮即可,
第8步,返回程序主窗口,单击“产生”按钮,如图2009012546所示。
图2009012546 单击“产生”按钮
第9步,打开“Create directory(创建目录)”对话框,提示用户是否创建BartPE文件夹。单击“是”按钮
第10步,在打开的“Windows版权”对话框中提示用户有关Windows系统的版权信息。确保本次 *** 作不涉及侵权行为,单击“我同意”按钮,
第11步,Barts PE Builder开始制作Windows PE镜像文件,制作过程需要几分钟时间。完成制作后单击“关闭”按钮即可
打开事先设置的保存Windows PE镜像文件的文件夹,用户可以看到制作的ISO格式光盘镜像文件,如图2009012550所示。
1、JWT的构成
- 头部(header):描述该JWT的最基本的信息,如类型以及签名所用的算法。
- 负载(payload):存放有效信息的地方。
- 签证(signature):base64加密后的header、base64加密后的payload和密钥secret加密后组成。
2、整合JWT
21 引入JWT依赖
comauth0
java-jwt
3183
22 编写JWTUtils工具类
package comstockutils;
import comauth0jwtJWT;
import comauth0jwtJWTCreator;
import comauth0jwtJWTVerifier;
import comauth0jwtalgorithmsAlgorithm;
import comauth0jwtinterfacesDecodedJWT;
import comauth0jwtinterfacesVerification;
import javautilCalendar;
import javautilMap;
public class JWTUtils {
private static final String SING="@#$%^&";
// 生成token
public static String getToken(Map map){
Calendar instance = CalendargetInstance();
instanceadd(CalendarMINUTE,30);
//创建jwt builder
JWTCreatorBuilder builder = JWTcreate();
//payload
builderwithExpiresAt(instancegetTime());
mapforEach((k,v)->{
builderwithClaim(k,v);
});
//设置签名
String token = buildersign(AlgorithmHMAC256(SING));
return token;
}
//验证令牌
public static void verifyToken(String token){
JWTVerifier require = JWTrequire(AlgorithmHMAC256(SING))build();
requireverify(token);
}
//获取token信息
public static DecodedJWT getTokenInfo(String token){
DecodedJWT verify = JWTrequire(AlgorithmHMAC256(SING))build()verify(token);
return verify;
}
}
23 编写拦截器
public class JWTInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(>
之前在SpringBoot项目中一直使用的是SpringFox提供的Swagger库,上了下官网发现已经有接近两年没出新版本了!前几天升级了SpringBoot 26x 版本,发现这个库的兼容性也越来越不好了,有的常用注解属性被废弃了居然都没提供替代!无意中发现了另一款Swagger库SpringDoc,试用了一下非常不错,推荐给大家!
SpringDoc简介
SpringDoc是一款可以结合SpringBoot使用的API文档生成工具,基于OpenAPI 3,目前在Github上已有17K+Star,更新发版还是挺勤快的,是一款更好用的Swagger库!值得一提的是SpringDoc不仅支持Spring WebMvc项目,还可以支持Spring WebFlux项目,甚至Spring Rest和Spring Native项目,总之非常强大,下面是一张SpringDoc的架构图。
使用
接下来我们介绍下SpringDoc的使用,使用的是之前集成SpringFox的mall-tiny-swagger项目,我将把它改造成使用SpringDoc。
集成
首先我们得集成SpringDoc,在pomxml中添加它的依赖即可,开箱即用,无需任何配置。
<!--springdoc 官方Starter-->orgspringdocspringdoc-openapi-ui166
从SpringFox迁移
我们先来看下经常使用的Swagger注解,看看SpringFox的和SpringDoc的有啥区别,毕竟对比已学过的技术能该快掌握新技术;
接下来我们对之前Controller中使用的注解进行改造,对照上表即可,之前在@Api注解中被废弃了好久又没有替代的description属性终于被支持了!
/
品牌管理Controller
Created by macro on 2019/4/19
/@Tag(name ="PmsBrandController", description ="商品品牌管理")@Controller@RequestMapping("/brand")publicclassPmsBrandController{@AutowiredprivatePmsBrandService brandService;privatestaticfinalLogger LOGGER = LoggerFactorygetLogger(PmsBrandControllerclass);@Operation(summary ="获取所有品牌列表",description ="需要登录后访问")@RequestMapping(value ="listAll", method = RequestMethodGET)@ResponseBodypublicCommonResult> getBrandList() {returnCommonResultsuccess(brandServicelistAllBrand()); }@Operation(summary ="添加品牌")@RequestMapping(value ="/create", method = RequestMethodPOST)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult createBrand(@RequestBodyPmsBrand pmsBrand) { CommonResult commonResult; int count = brandServicecreateBrand(pmsBrand);if(count ==1) { commonResult = CommonResultsuccess(pmsBrand); LOGGERdebug("createBrand success:{}", pmsBrand); }else{ commonResult = CommonResultfailed(" *** 作失败"); LOGGERdebug("createBrand failed:{}", pmsBrand); }returncommonResult; }@Operation(summary ="更新指定id品牌信息")@RequestMapping(value ="/update/{id}", method = RequestMethodPOST)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult updateBrand(@PathVariable("id")Longid,@RequestBodyPmsBrand pmsBrandDto, BindingResult result) { CommonResult commonResult; int count = brandServiceupdateBrand(id, pmsBrandDto);if(count ==1) { commonResult = CommonResultsuccess(pmsBrandDto); LOGGERdebug("updateBrand success:{}", pmsBrandDto); }else{ commonResult = CommonResultfailed(" *** 作失败"); LOGGERdebug("updateBrand failed:{}", pmsBrandDto); }returncommonResult; }@Operation(summary ="删除指定id的品牌")@RequestMapping(value ="/delete/{id}", method = RequestMethodGET)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult deleteBrand(@PathVariable("id")Longid) { int count = brandServicedeleteBrand(id);if(count ==1) { LOGGERdebug("deleteBrand success :id={}", id);returnCommonResultsuccess(null); }else{ LOGGERdebug("deleteBrand failed :id={}", id);returnCommonResultfailed(" *** 作失败"); } }@Operation(summary ="分页查询品牌列表")@RequestMapping(value ="/list", method = RequestMethodGET)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult> listBrand(@RequestParam(value ="pageNum", defaultValue ="1")@Parameter(description ="页码")Integer pageNum,@RequestParam(value ="pageSize", defaultValue ="3")@Parameter(description ="每页数量")Integer pageSize) { List brandList = brandServicelistBrand(pageNum, pageSize);returnCommonResultsuccess(CommonPagerestPage(brandList)); }@Operation(summary ="获取指定id的品牌详情")@RequestMapping(value ="/{id}", method = RequestMethodGET)@ResponseBody@PreAuthorize("hasRole('ADMIN')")publicCommonResult brand(@PathVariable("id")Longid) {returnCommonResultsuccess(brandServicegetBrand(id)); }}
接下来进行SpringDoc的配置,使用OpenAPI来配置基础的文档信息,通过GroupedOpenApi配置分组的API文档,SpringDoc支持直接使用接口路径进行配置。
/
SpringDoc API文档相关配置
Created by macro on 2022/3/4
/@ConfigurationpublicclassSpringDocConfig{@BeanpublicOpenAPImallTinyOpenAPI(){returnnewOpenAPI() info(newInfo()title("Mall-Tiny API") description("SpringDoc API 演示") version("v100") license(newLicense()name("Apache 20")url(">
1、双击打开HBuilder编辑工具,新建静态页面并引入AngularJS核心文件。
2、在<body></body>插入一个div标签元素,然后在div标签内插入select标签元素。
3、调用AngularJS中的module和controller,初始化下拉框的值。
4、利用ID选择器设置下拉框的样式布局,设置宽度、高度、字体属性、圆角和背景渐变。
5、在select标签元素上添加ng-change事件,获取下拉框选中时的文本内容。
以上就是关于c++ builder这种错误怎么解决全部的内容,包括:c++ builder这种错误怎么解决、如何编译Delphi组件让其在C++ Builder中可用、Lombok @Builder注解 Annotation Problem等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)