vfp 中 Thisform.Edit1.SelStart 按中文计算

时间: 2023-06-23 15:08:17 浏览: 37
在 VFP 中,`Thisform.Edit1.SelStart` 返回当前编辑框中所选文本(或光标所在位置)的起始字符位置,以字节为单位计算。对于中文字符,一个中文字符通常占用两个字节,因此需要特殊处理。 可以通过将字符串转换为字节数组来计算中文字符的长度,然后将结果除以 2,得到中文字符的数量。具体示例代码如下: ``` lnStart = Thisform.Edit1.SelStart // 获取起始位置 lcText = Thisform.Edit1.Value // 获取编辑框中的文本 lnByteCount = Asc(Chrtran(lcText, Chr(0), Chr(255))) // 获取字节数组的长度 lnChineseCount = lnByteCount / 2 // 计算中文字符的数量 ``` 需要注意的是,上述代码只适用于纯中文文本,如果文本中包含其他语言的字符,则需要根据具体情况进行调整。
相关问题

vfp msgraph.chart设置

VFP中的msgraph.chart是用于创建和操作图表的对象。通过使用msgraph.chart对象,我们可以在VFP应用程序中动态地添加和编辑图表,以及设置其属性。 要使用msgraph.chart对象,首先需要通过创建一个OLE对象来实例化它。可以使用CREATEOBJECT函数并指定要创建的OLE对象的类型“msgraph.chart”来实现。 一旦创建了msgraph.chart对象,就可以设置其属性和方法来自定义图表。下面是一些常用的设置: 1. 设置图表类型:可以使用Type属性来设置图表的类型,比如柱状图、折线图、饼图等。可以使用常量或相应的数字值来指定图表类型。 2. 设置图表标题:可以使用Title属性来设置图表的标题,可以将字符串赋值给该属性以设置标题内容。 3. 设置图表数据源:可以使用SetDataSource方法来设置图表的数据源。可以传递一个VFP的游标或查询作为参数来指定数据源。 4. 设置图表系列:可以使用SeriesCollection属性来访问和设置图表的系列。可以使用Add方法来添加新的系列,并设置各系列的名称、颜色、样式等属性。 5. 设置图表坐标轴:可以使用Axes属性来访问和设置图表的坐标轴。可以通过设置AxisTitle属性来添加坐标轴标题,通过设置MinimumScale和MaximumScale属性来调整坐标轴的刻度。 6. 设置图表样式:可以使用ApplyChartTemplate方法来应用预定义的图表样式模板。 7. 显示和保存图表:可以使用Show和SavePicture方法来显示和保存图表为图像文件。 除了上述示例,msgraph.chart对象还有更多属性和方法可供使用,可以根据具体需求进行设置和操作。使用时可以参考VFP的帮助文档或在线资源以获取更多关于msgraph.chart的详细信息。

jdk-8u301-linux-arm32-vfp-hflt.tar.gz

jdk-8u301-linux-arm32-vfp-hflt.tar.gz 是指适用于ARM架构32位VFP硬浮点的Linux操作系统的Java Development Kit (JDK)版本。具体回答如下: JDK表示Java Development Kit,是为开发Java应用程序所提供的软件开发环境。该版本的JDK号码为8u301,表示主要版本号为8,更新版本号为301。这意味着该JDK是Java 8的第301次更新的版本。 Linux是一种开源的操作系统,而这个JDK版本则为Linux系统而设计。它适用于ARM架构的处理器,这种处理器常用于移动设备、嵌入式系统和一些单板计算机。32位表示它是一个32位的应用程序,VFP则是指它支持向量浮点指令扩展(Vector Floating Point)硬件加速功能。 .tar.gz是该JDK的文件扩展名,表示它是一个压缩文件。.tar表示该文件使用tar压缩格式,.gz表示它经过gzip压缩。这种文件格式常用于在UNIX和类UNIX系统中进行文件压缩和解压缩。 因此,jdk-8u301-linux-arm32-vfp-hflt.tar.gz 是一个适用于ARM架构32位VFP硬浮点的Linux操作系统的Java Development Kit(JDK)版本,用于开发和运行Java应用程序。

相关推荐

### 回答1: arm-linux-gcc-4.5.1-v6-vfp-20120301.rar是一个文件,文件名中包含了一些数字和字母,这些数字和字母表示了一些信息。该文件是arm架构的Linux操作系统下使用的gcc编译器,具体版本为4.5.1,支持armv6指令集和vfp浮点数指令集,发布时间为2012年3月1日。 gcc编译器是一个开放源代码的编译器,它可以生成在不同平台(如arm、x86等)上运行的程序。arm架构是一种广泛使用于移动设备和嵌入式系统中的微处理器架构,armv6是其中一种指令集,vfp是浮点指令集。 该编译器可以用于开发各种arm架构下的应用程序,比如嵌入式系统、智能手机、平板电脑等。它可以将C、C++、Objective-C等高级语言编写的源代码编译成arm架构下的可执行文件。使用该编译器进行开发可以提高程序的稳定性和性能,并节省开发成本和时间。 总之,arm-linux-gcc-4.5.1-v6-vfp-20120301.rar是一个在arm架构下使用的gcc编译器,可以用于开发各种类型的应用程序,具有较高的稳定性和性能。 ### 回答2: arm-linux-gcc-4.5.1-v6-vfp-20120301.rar 是一个Linux操作系统下的ARM架构编译器,其版本号为4.5.1,支持v6和vfp指令集,在2012年3月1日发布。这个编译器可以在Linux环境下编译ARM架构的代码,并支持v6和vfp指令集,可以有效地提高代码的运行效率和性能。常见的应用场景包括嵌入式系统、移动设备以及无线网络等领域。此外,这个编译器还提供了一些工具,例如汇编器、链接器、调试器等,可以帮助开发者进行代码编译、调试以及优化等工作。总之,arm-linux-gcc-4.5.1-v6-vfp-20120301.rar是一个重要的开发工具,对于ARM架构的应用程序开发具有重要意义。
### 回答1: 可以使用 VFP 的 LINEREAD() 函数来实现,它可以将文本文件中每行的内容提取到一个数组中。示例代码如下:DIMENSION lines[100]OPEN '文件路径' TO fh AS #1DO WHILE NOT EOF(fh)LINE INPUT #fh, linelines[n] = LINEREAD(line,1)n = n + 1ENDDOCLOSE #fh ### 回答2: 在VFP(Visual FoxPro)中,可以通过以下方法将文本文件内容按行提取到一个数组中: 1. 首先,使用FILETOSTR()函数将文本文件读取为一个字符串。 2. 使用STRTOFILE()函数将字符串按行分割为子字符串,并将其保存到一个临时文件中。 3. 使用FOPEN()函数打开临时文件,然后使用FGETS()函数逐行读取文件内容,并将每行内容存储到一个数组中。 4. 最后,关闭文件,删除临时文件并返回数组。 下面是一个示例代码: foxpro function GetFileContentToArray(tcFileName) local lcTempFile, lnFileHandle, lcLine, laContent lcTempFile = SYS(2023) + "\temp.txt" && 生成一个唯一的临时文件名 STRTOFILE(FILETOSTR(tcFileName), lcTempFile) && 将文本文件内容保存到临时文件 lnFileHandle = FOPEN(lcTempFile) if lnFileHandle < 1 messagebox("错误", "无法打开文件。") return .null. endif laContent = {} do while not FEOF(lnFileHandle) lcLine = FGETS(lnFileHandle) lcLine = ALLTRIM(lcLine) && 去除行首、行尾的空格 if not EMPTY(lcLine) ALINES(laTemp, lcLine) && 将行内容以空格分割为子数组 AADD(laContent, laTemp[1]) && 将行内容添加到最终数组中 endif enddo FCLOSE(lnFileHandle) DELETE FILE (lcTempFile) return laContent endfunc 以上示例代码演示了如何将一个文本文件的内容按行提取到一个数组中。通过将文本文件内容读取到一个字符串,然后将其按行分割为子字符串,并存储到一个数组中。这样就可以对每一行的内容进行操作和处理了。最后,关闭文件,删除临时文件,并返回包含所有行内容的数组。 ### 回答3: 在VFP中,我们可以使用以下方法将文本文件内容按行提取到一个数组中: 1. 首先,我们需要用OPEN命令打开文本文件,并将其读入变量中。假设我们要读取的文件名为"test.txt",那么可以使用以下代码将文件内容读入一个变量中: lcFile = "test.txt" lcText = "" IF FILE(lcFile) OPEN DATABASE (lcFile) SHARED lcText = FILETOSTR(lcFile) CLOSE DATABASES ENDIF 2. 接下来,我们需要将变量中的文本按行拆分,并将每一行存储到一个数组中。可以使用GETWORDCOUNT函数来获取文本中的行数,使用GETWORDNUM函数和GETWORD函数来逐行读取文本内容,并将每一行存储到一个数组中。以下是相应的代码: lcArray = [] lnLines = GETWORDCOUNT(lcText, CHR(13) + CHR(10)) FOR lnI = 1 TO lnLines lcLine = GETWORD(lcText, lnI, CHR(13) + CHR(10)) lcArray[lnI] = lcLine ENDFOR 这样,我们就将文本文件内容按行提取到了一个数组中。你可以使用lcArray变量来访问和操作这些文本行。
### 回答1: VFP中可以使用以下代码获取在播放音乐的进度信息:Dim nCurrentPosition As Long nCurrentPosition = GetPosition(SoundObjectName) ### 回答2: 在Visual FoxPro (VFP)中获取正在播放音乐的进度信息的代码可以使用Windows API函数mciSendString,并结合VFP的相关命令来实现。下面是一个示例代码: foxpro * 创建一个新的VFP窗体 CREATE FORM frmMusicProgressBar * 在VFP窗体中添加一个进度条控件和一个按钮控件来开始音乐播放 ADD OBJECT progressBar AS PROGRESSBAR WITH Top = 10, Left = 10, Width = 280, Height = 20 ADD OBJECT btnStartMusic AS COMMANDBUTTON WITH Top = 40, Left = 10, Caption = "播放音乐" * 音乐播放按钮的Click事件处理程序 PROCEDURE btnStartMusic.Click LOCAL cMciCommand, nMusicId, nMusicLength * 设置音乐文件路径 cMusicFilePath = "C:\Music\sample.mp3" * 使用mciSendString发送命令,打开并播放音乐文件 cMciCommand = "open " + cMusicFilePath + " type mpegvideo alias MyMusic" DECLARE INTEGER mciSendString IN winmm.dll STRING, STRING, INTEGER, INTEGER mciSendString(cMciCommand, 0, 0, 0) cMciCommand = "play MyMusic" mciSendString(cMciCommand, 0, 0, 0) * 获取音乐文件的长度(以毫秒为单位) cMciCommand = "status MyMusic length" mciSendString(cMciCommand, @nMusicLength, 255, 0) * 将音乐长度作为进度条的最大值 THISFORM.progressBar.MaxValue = nMusicLength * 定时器用于不断更新进度条的位置 SET TIMER OF THISFORM 1000 * 保存音乐ID以便在定时器事件处理程序中使用 nMusicId = VARTYPE(m.nMusicId) = 'N' AND m.nMusicId > 0 AND m.nMusicId or 0 STORE nMusicId TO THISFORM.nMusicId ENDPROC * 窗体的Timer事件处理程序 PROCEDURE FORM.Timer LOCAL nCurrentPosition LOCAL cMciCommand * 获取音乐的当前播放位置(以毫秒为单位) cMciCommand = "status MyMusic position" DECLARE INTEGER mciSendString IN winmm.dll STRING, STRING, INTEGER, INTEGER mciSendString(cMciCommand, @nCurrentPosition, 255, 0) * 将当前播放位置设置给进度条的Value属性 THISFORM.progressBar.Value = nCurrentPosition * 如果音乐播放完成,停止定时器和音乐播放 IF nCurrentPosition >= THISFORM.progressBar.MaxValue RELEASE TIMER mciSendString("stop MyMusic", 0, 0, 0) mciSendString("close MyMusic", 0, 0, 0) MESSAGEBOX("音乐播放完毕") ENDIF ENDPROC * 运行窗体 MODIFY FORM frmMusicProgressBar NOWAIT 上述代码创建了一个VFP窗体,其中包含一个进度条控件和一个按钮控件。当用户点击按钮时,代码将使用mciSendString函数打开并播放指定的音乐文件。然后,通过定时器事件处理程序不断获取当前音乐播放的位置,并将其设置给进度条的Value属性,从而实现了获取音乐播放进度的功能。当音乐播放完成后,定时器将停止并弹出一个消息框来通知用户。注意,音乐文件路径需要根据实际情况进行修改。 ### 回答3: 在 Visual FoxPro (VFP) 中,要获取正在播放音乐的进度信息,可以借助 Windows API 函数来实现。 首先,需要声明 Windows API 函数的调用。在 VFP 中,可以使用 DECLARE 命令来声明外部函数。在这种情况下,我们需要声明 mciSendCommand 函数和它所需的结构体。 DECLARE INTEGER mciSendCommand IN winmm; INTEGER wDeviceID,; INTEGER uMsg,; INTEGER dwParam1,; INTEGER dwParam2 DECLARE INTEGER mciGetErrorString IN winmm; INTEGER dwError,; STRING @lpstrBuffer,; INTEGER uLength DECLARE INTEGER mciGetDeviceID IN winmm; STRING lpszDevice 然后,我们可以编写获取音乐播放进度信息的代码。假设我们已经通过 mciSendCommand 打开了一个音乐文件并开始播放,我们可以使用 MCI_STATUS 命令来获取进度信息。 LOCAL lcCommand, lnPosition, lnStatus lnStatus = mciSendCommand(1, MCI_STATUS, MCI_STATUS_POSITION, 0) IF lnStatus = 0 THEN lnPosition = mciGetErrorString(lnStatus, @lcCommand, 255) ? "当前音乐播放位置:" + TRANSFORM(lnPosition) ELSE mciGetErrorString(lnStatus, @lcCommand, 255) ? "获取音乐播放位置失败:" + lcCommand ENDIF 在上述代码中,我们使用 mciSendCommand 函数来发送 MCI_STATUS 命令,并指定 MCI_STATUS_POSITION 标志来获取音乐播放位置。如果返回的结果代码为零,则说明成功获取到了进度信息,我们可以将其转换为字符串,并打印出来。如果返回的结果代码不为零,则说明获取进度信息失败,我们可以使用 mciGetErrorString 函数来获取具体的错误信息,并打印出来。 请注意,上述代码仅仅是演示了获取音乐播放进度信息的基本过程,实际使用时还需要根据具体情况进行适当的错误处理和资源释放。
### 回答1: 在 VFP 中,可以使用函数 LEFT() 来提取字符串中某个字符前的内容。语法为:LEFT(字符串, 字符位置)。其中,字符串为要提取的字符串,字符位置为某个字符在字符串中的位置。 例如: LEFT("abcdefg", 3) 返回 "abc" LEFT("abcdefg", 4) 返回 "abcd" 如果你要找的字符不在字符串中,那么LEFT()会返回整个字符串 LEFT("abcdefg","z") 返回 "abcdefg" ### 回答2: 在Visual FoxPro中,可以使用不同的方法来提取字符串中某个字符前的内容。 方法一:使用函数INSTR()和LEFT()组合 可以使用函数INSTR()来查找目标字符在字符串中的位置,并使用LEFT()来截取字符串的部分内容,实现提取字符前的内容。示例代码如下: FoxPro lcString = "Hello, World!" lcTargetChar = "," lnIndex = INSTR(lcString, lcTargetChar) // 查找逗号在字符串中的位置 lcResult = LEFT(lcString, lnIndex - 1) // 提取逗号前的内容 方法二:使用函数AT()和SUBSTR()组合 可以使用函数AT()来查找目标字符在字符串中的位置,并使用SUBSTR()来截取字符串的部分内容,实现提取字符前的内容。示例代码如下: FoxPro lcString = "Hello, World!" lcTargetChar = "," lnIndex = AT(lcTargetChar, lcString) // 查找逗号在字符串中的位置 lcResult = SUBSTR(lcString, 1, lnIndex - 1) // 提取逗号前的内容 以上两种方法都可以实现提取字符串中某个字符前的内容,选择使用哪种方法取决于你的个人偏好和具体的需求。 ### 回答3: 要提取字符串中某个字符前的内容,可以使用Visual FoxPro (VFP)的字符串函数来实现。下面是一种可行的方法: 首先,我们可以使用函数AT()来查找指定字符在字符串中的位置。该函数的语法为AT("字符", "字符串"),返回指定字符在字符串中首次出现的位置。 然后,我们可以使用函数LEFT()来提取指定位置之前的内容。该函数的语法为LEFT("字符串", 位置),返回从字符串开始位置到指定位置之前的内容。 接下来,我们可以将以上两个函数结合起来,实现提取字符串中某个字符前的内容。假设我们要提取的字符是 "a",对应的字符串是 "Hello world",可以按照以下步骤进行操作: 1. 使用AT()函数找到字符 "a" 在字符串中的位置,例如:position = AT("a", "Hello world")。 2. 使用LEFT()函数提取位置 position 之前的内容,并将结果保存到一个变量中,例如:result = LEFT("Hello world", position - 1)。 最后,变量 result 将包含字符 "a" 之前的内容。 需要注意的是,如果指定字符不存在于字符串中,AT()函数会返回 0,此时我们可以进行相应的处理,例如添加错误处理逻辑或者设置默认值。 以上就是使用VFP提取字符串中某个字符前的内容的方法。希望能对你有所帮助!
### 回答1: 可以使用 VFP 来编写带有进度条的音乐播放软件。首先,可以使用 VFP 的 Form Designer 功能来创建一个新的窗体,然后将它的背景设置为播放器的进度条,接着在进度条上添加控件,如按钮、文本框等,用来控制音乐播放的功能。最后,可以使用 VFP 的 Visual FoxPro 编程语言来编写代码,完成音乐播放器的功能。 ### 回答2: 使用VFP(Visual FoxPro)编写一段带有进度条的音乐播放软件相对简单。下面是一种可能的实现方法: 1. 首先,需要在界面中添加一个进度条控件和一些按钮用于控制音乐播放,例如播放、暂停、停止等。 2. 创建一个数据表用于存储音乐文件的信息,包括文件路径、歌曲名称和时长等。可以使用VFP提供的DBF(dBASE)格式。 3. 在音乐播放软件界面的初始化过程中,从数据表中加载所有音乐文件的信息,并显示在列表框或网格控件中,同时设置进度条控件的最大值为当前选中音乐文件的时长。 4. 当用户选择要播放的音乐文件并点击“播放”按钮时,通过调用VFP内置函数或者使用COM组件来实现音乐播放功能。同时,启动一个定时器或使用VFP提供的计时器类来更新进度条控件的当前值。 5. 在定时器的Tick事件中,获取当前音乐播放的时间,将其设置为进度条控件的当前值,使进度条实时显示音乐播放进度。 6. 用户可以通过点击“暂停”按钮来暂停音乐播放,此时定时器停止更新进度条控件的当前值。再次点击“播放”按钮可以继续播放音乐。 7. 用户点击“停止”按钮时,停止音乐播放,并将进度条控件的当前值重置为0。 8. 可以根据需要增加其他功能,如调节音量、循环播放等。 以上是使用VFP编写一段带有进度条的音乐播放软件的基本步骤和思路。具体的实现方式和细节可能会根据实际需求和VFP的版本略有不同。 ### 回答3: 用Visual FoxPro (VFP) 编写一段带有进度条的音乐播放软件可以通过以下步骤实现: 1. 创建一个新的项目并打开VFP的开发环境。 2. 在界面设计视图中,添加一个音乐播放器控件(如MediaPlayer控件)和一个进度条控件(如ProgressBar控件)。 3. 在音乐播放器控件上设置音乐文件的路径。可以使用文件对话框或直接设置文件路径属性。例如:thisform.MediaPlayer.FileName = "C:\Music\song.mp3"。 4. 在播放按钮的Click事件中,添加以下代码来启动音乐播放器和更新进度条: thisform.MediaPlayer.Play() DO WHILE thisform.MediaPlayer.CurrentPosition < thisform.MediaPlayer.Duration thisform.ProgressBar.Value = INT(thisform.MediaPlayer.CurrentPosition / thisform.MediaPlayer.Duration * 100) APPLICATION.DoEvents() ENDDO thisform.MediaPlayer.Stop() thisform.ProgressBar.Value = 0 5. 在停止按钮的Click事件中,添加以下代码来停止音乐播放器并重置进度条: thisform.MediaPlayer.Stop() thisform.ProgressBar.Value = 0 6. 运行程序,单击播放按钮后,音乐将开始播放并且进度条会根据音乐播放的进度进行更新。单击停止按钮后,音乐播放将停止并且进度条将被重置为0。 以上是一个简单的实现进度条的音乐播放软件的示例。根据实际需求,你可能还需要添加其他功能,如音量调节、循环播放、列表播放等。

最新推荐

VFP常见命令按钮组的代码

VFP常见命令按钮组的代码 本题素材是考生文件夹中的表单tk04.scx。该表单的功能是:在文本框中输入一个整数,单击命令按钮“判断”后,若该整数是偶数,则label2显示“该数是一个偶数”,若为奇数,则显示“该数是...

vfp学生成绩管理系统英文资料和中文译文

vfp学生成绩管理系统英文资料和中文译文vfp学生成绩管理系统英文资料和中文译文

VFP重点,江苏计算机2级VFP

有关VFP考级和学习的重点,有许多学习上的难点有关VFP考级和学习的重点,有许多学习上的难点有关VFP考级和学习的重点,有许多学习上的难点有关VFP考级和学习的重点,有许多学习上的难点有关VFP考级和学习的重点,有...

VFP代码做的时钟程序.doc

VFP代码做的时钟程序,VFP代码做的时钟程序.doc,VFP代码做的时钟程序.doc

VFP9中轻松绑定 Windows 事件

VFP 所缺少的在其它开发环境中的一个功能是捕捉 Windows 事件的能力。VFP 9 扩展了 BindEvent()函数的功能,现在,当 Windows 传递某些特定的消息给 VFP 窗口的时候,BindEvent()可以调用我们自己的代码。这个功能...

ssm数据结构课程网络学习平台的+vue毕业论文.doc

ssm数据结构课程网络学习平台的+vue毕业论文.doc

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

Objective-C中的协议与代理设计模式介绍

# 1. 理解Objective-C中的协议 协议是Objective-C中一种很重要的特性,它类似于其他编程语言中的接口,用来定义对象之间的通信规则和行为约定。在Objective-C中,协议可以帮助实现对象之间的松耦合和重用性。让我们深入了解Objective-C中的协议。 ## 1.1 什么是Objective-C中的协议? 在Objective-C中,协议是一组方法的声明,定义了一个对象可以遵循的接口。协议本身并不实现任何方法,而是规定遵循该协议的类需要实现协议中定义的方法。通过协议,可以在不同的类之间定义一组公共的行为和方法。 ## 1.2 协议的声明和使用方法 在Ob

编写求n!的函数f(int n),在主函数中输入两个整数m、n,然后调用函数求: C=m!/n!(m -n)!

好的,我可以编写这个函数。以下是代码示例: ```c++ #include <iostream> using namespace std; int f(int n) { if (n <= 1) { return 1; } else { return n * f(n - 1); } } int main() { int m, n; cout << "请输入两个整数m和n,以空格分隔:" << endl; cin >> m >> n; int C = f(m) / (f(n) * f(m - n));

视频中运动目标跟踪算法的研究.doc

视频中运动目标跟踪算法的研究.doc