【PB案例学习笔记】-02 目录浏览器

写在前面

这是PB案例学习笔记系列文章的第二篇,该系列文章适合具有一定PB基础的读者,

通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。

文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git

gitee代码仓库

需要源代码的小伙伴们可以自行下载查看,后续文章涉及到的案例代码也都会提交到这个仓库【pb-project-example

如果对小伙伴有所帮助,希望能给一个小星星⭐支持一下小凡。

一、小目标

掌握pb应用程序的创建、运行、中止等最基本操作。学会使用DropDownListBox控件、ListBox控件,以及

DirListSelectItemDirSelectSetRedraw 等函数和SetPointer 系统函数使用。最终实现如下效果

最终效果

二、 DropDownListBox控件

2.1 常用属性
属性描述
AllowEdit 设置是否允许用户输入新的项目,默认为不允许
AutoHScroll设置当录入新项目或者删除数据时是否允许自动滚动编辑框,默认不允许 .下拉
列表框的宽度大于 Limit 规定的数值, 则没有必要设置该属性; 否则就应该设置该属性为 True
Enabled设置是否允许进行选择,默认值是 True
Limit 用来规定用户可以输入的字符的最大宽度, 0 表示没有限制,最大是 32 766 个,
默认是 0。
ShowList 规定是否总显示下拉列表,当该属性为 True 时, PowerBuilder 自动将 AllowEdit
属性置为 True,并且此时列表框总显示,向下的小箭头取消。该属性默认为 False,通常情
况下不将该属性置为 True
Sorted 定义各个项目是否自动排序显示,默认为 False
HScrollBar在需要时,是否显示水平滚动条
VScrollBar在需要时,是否显示垂直滚动条
2.2 常用事件
事件触发时机
SelectionChanged 默认事件,在重新选择了下拉列表中的项目时触发,参数 index 可以直接引用,是当前选中项目的索引号
Modified 在输入了新的项目后按下 Enter 或者 Tab 键而使下拉列表框失去焦点时
触发
2.3 常用函数

提供了 37 个函数,图形下拉列表框除此之外又增加了 3 个用户图形处理的函数

2.3.1、AddItem 函数

语法

listbox.AddItem(String)

功能

在列表框最后添加一个项目, 如果列表框的 Sorted 属性为 True, 添加的项目重新排序

2.3.2、DeleteItem 函数

语法

Lb.DeleteItem(index)

返回值:

  • -1 表示删除失败
  • Null 表示参数为 Null
  • 正数,表示删除后列表框中的项目数

功能

删除指定索引号的项目

2.3.3、DirList 函数

语法

Lb.Dirlist(filespec,filetype,{statictext})

参数:

  • filespec 为要显示文件的路径及后缀

  • filetype 表示文件的类型

  • statictext 为窗口上的要显示路径的 statictext 控件名称

其中文件类型取值如下

文件类型-filetype描述
0可读写文件
1只读文件
2隐含文件
4系统文件
16子目录
32归档文件
16 384驱动器
32 768可读写文件以外的

**注:**同时显示多种类型的文件,可以使用加号连接。例如同时要显示可读写、子目录、驱动器, 参数 filetype 可以使用表达式 0+16+16384

返回值:

  • Null 表示至少有一个参数为 Null
  • True 表示操作正确完成
  • False 表示列表框不能正确显示指定文件 (ilespec 不是一个目录 )

功能

在列表框中显示指定类型的文件

例子

在 lb_1 列表框中显示目录“ c:\dos”下的后缀为txt 的所有可读写文件名称,并将路径名称“ c:\dos”显示在 statictext 控件 st_1 中

lb_1.DirList("c:\dos\*.txt",0,st_1)
2.3.4、DirSelect函数

语法

Listboxname.DirSelect ( selection )

返回值:

  • Null 表示至少有一个参数是Null
  • True 表示用户选择的是目录、驱动器
  • False表示用户选择的是文件

功能

如果目前列表框中的内容是使用函数 Dirlist 获得的,该函数会将用户在列表框Listboxname 中选择的项目的内容保存在 String 类型变量 Selection 中;如果目前列表框中的内容不是使用 DirSelect 获得的,该函数返回的值不能正确反映实际的内容

例子

String ls_pathname
String ls_pattern
Ls_pattern = '*.txt'
If lb_1.DirSelect(ls_pathname) Then //用户选择的是目录或驱动器lb_1.DirList(ls_pathname + ls_pattern,0) //显示用户选择的目录或驱动器下的文件
Else
//用户选择的是文件,进行其他相关处理
End If
2.3.5、FindItem 函数

语法

listboxname.FindItem ( text, index )

返回:

  • -1 表示没有找到或者发生错误
  • 有参数为 Null 时返回 Null
  • 正确执行并找到了匹配的项目则返回与之匹配的第一个项目的索引号

功能

listboxname 列表框中从索引号为index+1的项目开始搜索, 看是否有内容为text的项目。

例子

在 sle_1(单行文本输入框) 的 Modified 事件中,在 lb_1 查找所有和用户输入字符匹配的项目的索引号和内容

Int li_pos,li_pri
li_pos = lb_1.FindItem(this.text,0)
li_pri = li_pos
DoMessageBox(String(li_pos),lb_1.text(li_pos))li_pri = li_posli_pos = lb_1.FindItem(this.text,li_pos)
Loop Until li_pos <= li_pri
2.3.6、InsertItem 函数

语法

Lb_1.InsertItem(str,index)

参数:

  • str 表示要插入的内容
  • index表示索引号

返回值:

  • -1 表示插入失败
  • Null 表示有参数为 Null
  • 正整数表示插入项目在列表框中最后的实际位置

功能

在指定索引号前插入内容为 Item 的项目

例子

Lb_1.InsertItem(“倒数第二”,lb_1.TotalItems())

Lb_1.InsertItem("倒数第二",lb_1.TotalItems())
2.3.7、Reset 函数

语法

listbox.Reset()

返回值:

  • 1 表示执行成功
  • -1 表示执行失败

功能

用来清除列表框中的所有项目

2.3.8、SelectItem 函数

语法

listboxname.SelectItem ( item, index )

返回值:

  • 如果正确执行并找到了匹配的项目,则返回匹配项目的索引号
  • 如果没有匹配的项目,则返回 0
  • 如果发生了错误则返回-1
  • 如果有参数为 Null,则返回 Null

功能

在不允许多选的 listboxname 列表框的索引号为 index 之后查找内容为 item 的项目,如果找到则选中该项目

注: 该查找也是前面部分匹配,同函数 FindItem 的匹配相同。当列表框允许多选时,该函数不起作用,这时应该使用 FindItemSetState 来实现该功能。函数 SetState 不影响已经选中行的状态。

例子

在 lb_1 列表框中选中内容为“ beautiful”的项目,能否正确执行都显示提示信息

If lb_1.SelectItem("beautiful",0) > 0 ThenMessageBox("提示""正确选中了 beautiful")
ElseMessageBox("提示","没有找到指定的项目")
End If
2.3.9、Text 函数

语法

listbox.Text(index)

返回值:

index索引对应的item项目值

功能

用来读取指定索引号的项目的内容

2.3.10、TotalItems 函数

语法

listbox.TotalItems()  

返回值:

返回一个整型数值,表示列表框中总共有多少个项目

注: 列表框的第一个项目的索引号是1,最后一个的索引号等于 listbox.TotalItems()

功能

该函数可以读取列表框中总共有多少个项目

2.3.11、SelectedLength 函数

语法

editname.SelectedLength ( )

返回值:

  • -1 表示执行过程中发生了错误
  • 0 表示没有选中的项目
  • Null 表示 editname 为Null
  • 其他正整数表示选中项目的字符数目

功能

获取在 editname 中选中项目的字符数目,包括空格。

注:,该函数只有在下拉列表框选中项目并且没有失去焦点时,才能正确获得所选项目的字符数目,所以在很多的事件或控件中编程使用该函数都返回 0,因为这些事件触发时,下拉列表框失去了焦点,所以一般在下拉列表框的 SelectionChanged 事件中使用该函数。

另外,下拉列表框的 AllowEdit 属性必须为 True,才能正确执行该函数,否则该函数执行错误

例子

取消下拉列表框中选中的项目,可以在向下拉列表框添加初始数据时增加一个空值(“”),

选择空值即可表示取消选中项目。所以,在读取选中项目的内容时,首先判断选中字符的长度,如果不为 0 则继续处理,

否则表示取消选中,这时不做任何处理

If this.SelectedLength() > 0 Then
//继续处理
End If
2.3.12、SelectedText 函数

语法

editname.SelectedText ( )

返回值:

  • 当有错误发生或者没有选中项目时返回空值(“”)
  • 当 editname 为 Null 返回 Null
  • 正确执行时返回选中项目的内容

功能

返回 editname 中选中项目的内容。该函数在下拉列表框选中项目并且没有失去焦点时,可以正确返回选中项目的内容

例子

首先判断是否有选中项目,如果有就获取选中项目的内容并保存在变量中

String ls_selected
If ddlb_1.SelectedLength() > 0 Thenls_selected = ddlb_1.SelectedText()
End If
2.3.13、SelectText 函数

语法

editname.SelectText ( start, length )

返回值:

  • 返回选中的字符个数
  • 发生了错误则返回-1
  • 有参数为 Null 则返回Null

功能

editname 的编辑框中,从第 start 字符开始选中 length 个字符。

2.3.14、ReplaceText 函数啊

语法

editname.ReplaceText (string )

返回值:

  • 返回 string 字符串的长度
  • 发生错误则返回-1
  • 有参数为 Null 则返回Null

功能

editname 中用指定的字符串 string 来替换选中的字符

例子

本首先选中列表框 ddlb_1 中当前项目的第一个字符,然后替换成“ X”

If ddlb_1.SelectText(1,1) > 0 Thenddlb_1.ReplaceText("X")
End If

三、 ListBox 控件

ListBox我们叫做列表框,可以逐条陈列出多条信息,当信息比较多时,可以使用滚动条

3.1 常用属性

ListBox 属性有35个,一般经常需要修改的有5个

属性描述
Sorted指定列表框的内容是否排序,不管是数字还是字符都按字符处理,按照ASCII大小进行排序
VscrollBar 纵向滚动条
HscrollBar 横向滚动条
MultiSelect 表示是否可以选择多项
ExtendedSelect 多项进行同时选择,需要配合Ctrl或Shift键使用
3.2 常用事件

这里只列举出该控件特有的事件,其他事件与上一篇文章介绍的【命令按钮】事件相同

事件触发时机
SelectionChanged重新选择项目时,触发
DoubleClicked双击项目时触发
3.3 常用函数

该控件总共有35个函数,常用的有14个

3.3.1 Reset 函数

语法

 listbox.Reset()

返回值:

  • 1表示执行成功
  • -1表示执行失败

功能

清除列表框中的所有项目

3.3.2 AddItem 函数

语法

listbox.AddItem(String)

功能

列表框最后添加一个项目, 如果列表框的 Sorted 属性为 True, 则添加的项目重新排序

**注:**Item[]是一个记录列表框项目的数组,通过指定索引号可以获取项目的内容,但使用 AddItem 函数不能修改该属性。

3.3.3 TotalItems 函数

语法

listbox.TotalItems()

返回值:

一个整型数值,表示列表框中总共有多少个项目

功能

读取列表框中总共有多少个项目

**注:**列表框的第一个项目的索引号是1,最后一个的索引号等于listbox.TotalItems()

3.3.4 State 函数

语法

listbox.State(index)

返回值:

  • 1 表示指定索引号的项目是选中状态
  • 0 表示指定索引号的项目没有被选中

功能

用来判断指定索引号的项目是否选中

3.3.5 Text 函数

语法

listbox.Text(index)

返回值:

返回一个String 类型的项目值

功能

用来读取指定索引号的项目的内容

3.3.6 DeleteItem 函数

语法

Lb.DeleteItem(index)

返回值:

  • -1 表示删除失败
  • Null 表示参数为 Null
  • 其他正数值表示删除后列表框中的项目数。

功能

删除指定索引号的项目

3.3.7 InsertItem 函数

语法

Lb_1.InsertItem(str,index)
  • str 表示要插入的内容
  • index 表示插入项目的索引

返回值:

  • -1 表示插入失败
  • Null 表示有参数为 Null
  • 其他正整数表示插入项目在列表框中最后的实际位置

功能

在指定索引号前插入内容为 Item 的项目

例子

在 lb_1 列表框的倒数第二的位置插入一个内容为“倒数第二”的项目

Lb_1.InsertItem("倒数第二",lb_1.TotalItems())
3.3.8 Dirlist 函数

语法

Lb.Dirlist(filespec,filetype,{statictext})
  • filespec 为要显示文件的路径及后缀
  • statictext 为窗口上的要显示路径的 statictext 控件名称
  • filetype 表示文件的类型 ,取值如下
文件类型描述
0可读写文件
1只读文件
2隐藏文件
4系统文件
16子目录
32归档文件
16 384驱动器
32 768可读写文件以外的

**注:**同时显示多种类型的文件,可以使用加号连接。例如同时要显示可读写、子目录、驱动器, 参数 filetype 可以使用表达式 0+16+16384

返回值:

  • Null 表示至少有一个参数为 Null
  • True 表示操作正确完成
  • False 表示列表框不能正确显示指定文件 (当filespec 不是一个目录 )

例子

在 lb_1 列表框中显示目录“ c:\dos”下的后缀为txt 的所有可读写文件名称,并将路径名称“ c:\dos”显示在 statictext 控件 st_1 中

lb_1.DirList("c:\dos\*.txt",0,st_1)
//同时还显示驱动器和“ c:\dos”下的子目录
Lb_1.DirList("c:\dos\*.txt",0+16+16384,st_1)
3.3.9 DirSelect 函数

语法

Listboxname.DirSelect ( selection )

返回值:

  • Null 表示至少有一个参数是 Null
  • True 表示用户选择的是目录、驱动器
  • False表示用户选择的是文件

功能

如果目前列表框中的内容是使用函数 Dirlist 获得的,该函数会将用户在列表框Listboxname 中选择的项目的内容保存在 String 类型变量 Selection 中;

如果目前列表框中的内容不是使用 DirSelect 获得的,该函数返回的值不能正确反映实际的内容

例子

String ls_pathname
String ls_pattern
Ls_pattern = '*.txt'
If lb_1.DirSelect(ls_pathname) Then //用户选择的是目录或驱动器lb_1.DirList(ls_pathname + ls_pattern,0) //显示用户选择的目录或驱动器下的文件
Else
//用户选择的是文件,进行其他相关处理
End If
3.3.10 FindItem 函数

语法

listboxname.FindItem ( text, index )
  • 没有找到或者发生错误则返回-1
  • 有参数为 Null 时返回 Null
  • 正确执行并找到了匹配的项目则返回与之匹配的第一个项目的索引号

功能

listboxname 列表框中从索引号为 index+1 的项目开始搜索, 看是否有内容为 text的项目

例子

在 sle_1 的 Modified 事件中,在 lb_1 查找所有和用户输入字符匹配的项目的索引号和内容。

Int li_pos,li_pri
li_pos = lb_1.FindItem(this.text,0)li_pri = li_pos
DoMessageBox(String(li_pos),lb_1.text(li_pos))li_pri = li_posli_pos = lb_1.FindItem(this.text,li_pos)
Loop Until li_pos <= li_pri
3.3.11 SelectedIndex 函数

语法

listcontrolname.SelectedIndex ( )

返回值:

  • 如果找到选中项目,则返回该第一个选中项目的索引号
  • 如果 listcontrolname为 Null 则返回 Null
  • 如果没有找到选中项目或者查找过程中发生了错误则返回-1

功能

在 listcontrolname 列表框中查找第一个选中的项目

例子

如果列表框中有选中项目,则显示第一个选中项目的内容

If lb_1.SelectedIndex() > 0 Then //看是否有选中项目MessageBox(“提示”,lb_1.Text(lb_1.SelectedIndex())) //显示选中项目的内容
End If
3.3.12 SelectedItem 函数

语法

listboxname.SelectedItem ( )

返回值:

  • 如果有选中项目,则返回选中项目的内容
  • 如果没有选中项目则返回空值""
  • 如果 listboxname 为 Null,则返回 Null

功能

获取列表框 listboxname中选中项目的内容。通常在列表框不允许同时选中多行时
使用,当允许多行同时选中时,经常使用 state 和 text 函数来获取选中项目的内容

例子

下面程序在某按钮的单击事件中判断列表框 lb_1 中是否有选中项目,如果有,则
显示选中项目的内容,否则显示提示信息

If Len(lb_1.SelectedItem()) > 0 ThenMessageBox("提示",lb_1.SelectedItem())
ElseBeep(2)MessageBox("提示","请首先选择! ")
End If
3.3.13 SelectItem 函数

语法

listboxname.SelectItem ( item, index )

返回值:

  • 如果正确执行并找到了匹配的项目,则返回匹配项目的索引号
  • 如果没有匹配的项目,则返回 0
  • 如果发生了错误则返回-1
  • 如果有参数为 Null,则返回 Null

功能

在不允许多选的 listboxname 列表框的索引号为 index 之后查找内容为 item 的项目,
如果找到则选中该项目。注意,该查找也是前面部分匹配,同函数 FindItem 的匹配相同。当
列表框允许多选时,该函数不起作用,这时应该使用 FindItemSetState 来实现该功能。函
SetState 不影响已经选中行的状态

例子

在 lb_1 列表框中选中内容为“ beautiful”的项目,能否正确执行都显示提示信息

If lb_1.SelectItem("beautiful",0) > 0 ThenMessageBox("提示""正确选中了 beautiful")
ElseMessageBox("提示","没有找到指定的项目")
End If
3.3.14 TotalSelected 函数

语法

listcontrolname.TotalSelected ( )

返回值:

  • 正确执行时返回列表框中选中的项目数
  • 没有选中项目时返回 0
  • 执行错误时返回-1
  • listcontrolnameNull,则返回 Null

功能

获取在 listcontrolname 列表框中选中的项目数。该函数只在列表框允许多选时起
作用,在不允许多选列表框中,即使有选中,项目也返回-1

例子

在某按钮的 Clicked 事件中,用来判断列表框是否允许多选,如果允许则使用函数 TotalSelected 显示选中的项目数,

如果不允许多选,则使用其他函数显示是否有选中项目

If lb_1.MultiSelect or lb_1.ExtendedSelect ThenIf lb_1.TotalSelected() > 0 ThenMessagebox("提示","该列表框允许同时选中多行,现有"&+ String(lb_1.TotalSelected()) + "条数据选中!")ElseMessagebox("提示","该列表框允许同时选中多行,没有选中的数据!")End If
ElseIf lb_1.SelectedIndex() > 0 ThenMessageBox("提示","该列表框最多只允许选中一条,现有一条选中!")ElseMessageBox("提示","该列表框最多只允许选中一条,现没有选中的数据!")End If
End If

四、搭建程序基本框架_

① 建立工作区

② 建立应用

③ 建立窗口

以上步骤忘记的小伙伴,可以参照第一篇文章创建

④ 添加控件

在窗口中建立一个DropDownListBox控件,两个ListBox控件以及一个CommandButton控件。布局如下图所示

各个控件名称为ddlb_disklb_filderslb_files

添加控件

⑤ 保存窗口,将窗口命名为w_main

五、设置各个控件的外观属性

设置DropDownListBox控件和ListBox控件外观属性。勾选如下属性

VisibleSortedVScrollBarBorder四个属性

六、编写事件代码

这里只列举出常用函数的使用,如果想了解更多,可以参照上面小节函数多写代码实践

①在w_main 窗口的open 事件中编写如下代码

SetPointer(HourGlass!)
ddlb_disk.DirList("c:\*.*", 16384)
ddlb_disk.SelectItem("c", 0)
lb_folders.Dirlist("C:\*.*", 32768 + 16)
lb_files.Dirlist("C:\*.*", 39)

②在ddlb_disk控件的SelectionChanged事件中添加如下代码

string ls_disk
this.dirselect( ls_disk)IF ls_disk <>""THENSetPointer(HourGlass!)lb_folders.setredraw(false)lb_folders.dirlist(ls_disk,32768)lb_folders.DirList("*.*",32768 +16)lb_files.DirList("*.*",39)
end if

③ 在lb_folders控件的SelectionChanged事件中添加如下代码

String ls_dir
if this.DirSelect(ls_dir) thenSetPointer(HourGlass!)this.DirList(ls_dir,32768+16)lb_files.dirlist("*.*",39)end if

七、运行程序

运行程序效果

本期内容到这儿就结束了,希望对你有所帮助。我们下期再见 ヾ(•ω•`)o (●’◡’●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Django实现的(bert)深度学习文本相似度检测系统设计

基于Django实现的&#xff08;bert&#xff09;深度学习文本相似度检测系统设计 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 登录页面 注册页面&#xff1a;用户账号&#xff0c;密码…

05-14 周二 PyTorch动态量化和静态量化理解

05-14 周二 PyTorch动态量化和静态量化理解 时间版本修改人描述2024年5月14日10:44:30V0.1宋全恒新建文档2024年5月14日16:28:16V1.0宋全恒填充了PyTorch对于两种量化方式的内容 简介 Pytorch动态量化 设计神经网络时&#xff0c;可以进行许多权衡。在模型开发和训练期间&…

Dilworth定理:最少的下降序列个数就等于整个序列最长上升子序列的长度

概念如下&#xff1a; 狄尔沃斯定理_百度百科 (baidu.com) 本质就是找要求序列中最长的单调的子序列&#xff08;不一定连续&#xff09;的长度。 模板如下&#xff1a; 时间复杂度为O&#xff08;N^2&#xff09; #include<iostream>using namespace std;int dp[100…

RK3568平台开发系列讲解(SPI篇)SPI数据的传输

🚀返回专栏总目录 文章目录 一、数据结构1.1、spi_transfer 结构体1.2、spi_message二、数据发送程序分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 参考资料: spi_transferspi_message一、数据结构 spi 数据传输主要使用了 spi_message 和 spi_transfer 结构…

二叉树的前序遍历(leetcode)

144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 这道题的启发性真的很强 &#xff0c;这里必须传入i的指针进去&#xff0c;下一次栈帧i&#xff0c;但回到了上一层i又变回到了原来的i&#…

docker network ls(用于列出 Docker 主机上的所有网络)

docker network ls 是一个 Docker 命令&#xff0c;用于列出 Docker 主机上的所有网络。Docker 允许你创建自定义的网络&#xff0c;以便更好地控制容器之间的通信。 当你运行 docker network ls 命令时&#xff0c;你可能会看到如下类似的输出&#xff08;输出可能会根据你的…

每日一题12:Pandas:数据重塑-融合

一、每日一题 解答&#xff1a; import pandas as pddef meltTable(report: pd.DataFrame) -> pd.DataFrame:reshaped_report report.melt(id_varsproduct, var_namequarter, value_namesales)return reshaped_report 题源&#xff1a;Leetcode 二、总结 melt()函数是Pa…

Nginx生产环境最佳实践之配置灰度环境

你好呀&#xff0c;我是赵兴晨&#xff0c;文科程序员。 下面的内容可以说是干货满满建议先收藏再慢慢细品。 今天&#xff0c;我想与大家深入探讨一个我们日常工作中不可或缺的话题——灰度环境。你是否在工作中使用过灰度环境&#xff1f;如果是&#xff0c;你的使用体验如…

AI图像生成-基本步骤

模型板块 1、新建采样器&#xff1a;新建节点-》采样器-》K采样器 2、拖动模型节点后放开&#xff0c;选择checkpoint加载器&#xff08;简易&#xff09;&#xff0c;模型新建成功 提示词板块 1、拖动正面条件节点后放开&#xff0c;选择CLIP文本编码器&#xff0c;模型新建…

mysql 一次删除多个备份表

show tables时&#xff0c;发现备份的表有点多&#xff0c;想要一个sql就删除 总不能drop table xx ; 写多次吧。 方式一 1.生成删除某个数据库下所有的表SQL -- 查询构建批量删除表语句&#xff08;根据数据库名称&#xff09; select concat(drop table , TABLE_NAME, ;)…

FSMC的NOR Flash/PSRAM 控制器功能介绍(STM32F4)

目录 概述 1 FSMC支持的类型 1.1 信号类型概述 1.2 FSMC的应用 2 外部存储器接口信号 2.1 I/O NOR Flash 2.2 PSRAM/SRAM 3 支持的存储器和事务 4 通用时序规则 5 NOR Flash/PSRAM 控制器异步事务 5.1 模式 1 - SRAM/PSRAM (CRAM) 5.2 模式 A - SRAM/PSRAM (CRAM…

Golang | Leetcode Golang题解之第90题子集II

题目&#xff1a; 题解&#xff1a; func subsetsWithDup(nums []int) (ans [][]int) {sort.Ints(nums)n : len(nums) outer:for mask : 0; mask < 1<<n; mask {t : []int{}for i, v : range nums {if mask>>i&1 > 0 {if i > 0 && mask>&…

[HUBUCTF 2022 新生赛]ezsql

测试无结果 扫描目录&#xff0c;得到源码 找到注入点 思路&#xff1a;更新资料的时候可以同时更新所有密码 我们需要知道密码的字段名 爆库 nicknameasdf&age111,description(select database())#&descriptionaaa&token31ad6e5a2534a91ed634aca0b27c14a9 爆表…

网络库-POCO介绍

1.简介 POCO C Libraries 提供一套 C 的类库用以开发基于网络的可移植的应用程序&#xff0c;它提供了许多模块&#xff0c;包括网络编程、文件系统访问、线程和并发、数据库访问、XML处理、配置管理、日志记录等功能。Poco库的设计目标是易于使用、高度可定制和可扩展。 包含…

基于MSWA相继加权平均的交通流量分配算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于MSWA相继加权平均的交通流量分配算法matlab仿真.如图所示交通网络中&#xff0c;包含6个节点、11各路段、9个OD对。经枚举可得每个OD对间存在3条无折返有效路…

elasticsearch使用Ngram实现任意位数手机号搜索

文章目录 Ngram自定义分词案例实战问题拆解 Ngram分词器定义Ngram分词定义Ngram分词示例Ngram分词应用场景 Ngram分词实战 Ngram自定义分词案例 当对keyword类型的字段进行高亮查询时&#xff0c;若值为123asd456&#xff0c;查询sd4&#xff0c;则高亮结果是&#xff1c;em&a…

【AI】DeepStream(03):deepstream_test1_app

1、简介 deepstream-test1:演示各种 DeepStream 插件构建 GStreamer 管道。从文件中获取视频、解码、批处理,然后进行对象检测,最后在屏幕上渲染框。 源码路径:/opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-test1 先看下效果 2、编译 1)…

重写muduo网络库之调用流程的梳理

目录 1、流程叙述 2、我们看看TcpServer的构造都做了什么&#xff1f; 3、start() 3.1 开启loop 3.2 连接的建立 3.3 数据的收发 4、连接的关闭 muduo网络库各组件梳理见此博客 重写muduo库之组件梳理 1、流程叙述 首先&#xff0c;我们是怎么使用的&#xff1f; 1.定…

【iOS】工厂模式

文章目录 前言设计模式的三大原则简单工厂模式工厂方法模式抽象工厂模式关于三兄弟的升级与降级注意 前言 上文讲完了iOS的架构模式&#xff0c;接下来聊一聊设计模式&#xff0c;设计模式有许多&#xff0c;主要介绍一下工厂模式 设计模式的三大原则 S 单一职责原则 告诉我…

PBR系列-光之简史

作者&#xff1a;游梦 ​ 欢迎进入官网体验使用&#xff1a;Mapmost——让人与机器联合创作成为新常态 ​说到PBR理论分为三大理论&#xff1a;物理光源、物理材质与物理相机&#xff0c;三者都与光有着千丝万缕的关系&#xff0c;原打算这期讲解物理材质&#xff0c;在梳理知…