谁能帮我把这段代码转成Vb的代码,不胜感激,谢谢!
void CTempDlg::OnOK()
{
UpdateData(1);
int nlen=m_edit1.GetLength();
char *username=m_edit1.GetBuffer(nlen);//定义一个新字符串username,长度为nlen,并将m_edit1中的字符串一个个放入到username数组中
char strA[]="9012345678abcdeABCDEFGHIJKLMNfghijklmnUVWXYZxyzuvwopqrstOPQRST";
int szint[18]={0x11,0x34,0xC9,0x23,0x75,0x18,0xD7,0xE2,0x12,0x35,0x29,0x2B,0xEC,0xB6,0x23,0x19};
int ljq1=0,ljq2=0x25;//累加器
int k=0,l=0,q=0;
char *serile=new char[nlen];//定义一个新字符串数组serile,长度为nlen
for (int i=0;i<strlen(username);ljq1=ljq1+5,i++)
{
for (int j=0;j<strlen(strA);j++)
{
if (username[i]==strA[j])
{
// k=0,l=0/*,q=szint[i+2]*/;
l=szint[i];
......
谁能帮我把这段代码转成Vb的代码,不胜感激,谢谢!
void CTempDlg::OnOK()
{
UpdateData(1);
int nlen=m_edit1.GetLength();
char *username=m_edit1.GetBuffer(nlen);//定义一个新字符串username,长度为nlen,并将m_edit1中的字符串一个个放入到username数组中
char strA[]="9012345678abcdeABCDEFGHIJKLMNfghijklmnUVWXYZxyzuvwopqrstOPQRST";
int szint[18]={0x11,0x34,0xC9,0x23,0x75,0x18,0xD7,0xE2,0x12,0x35,0x29,0x2B,0xEC,0xB6,0x23,0x19};
int ljq1=0,ljq2=0x25;//累加器
int k=0,l=0,q=0;
char *serile=new char[nlen];//定义一个新字符串数组serile,长度为nlen
for (int i=0;i<strlen(username);ljq1=ljq1+5,i++)
{
for (int j=0;j<strlen(strA);j++)
{
if (username[i]==strA[j])
{
// k=0,l=0/*,q=szint[i+2]*/;
l=szint[i];
......
声明固定大小的数组
有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:
建立公用数组,在模块的声明段用 Public 语句声明数组。
建立模块级数组,在模块的声明段用 Private 语句声明数组。
建立局部数组,在过程中用 Private 语句声明数组。
设定上下界
声明数组时,在数组名之后跟一个用括号括起来的上界。上界不得超过 Long 数据类型的范围(-2,147,483,648 到 2,147,483,647)。例如,下列数组声明可出现在模块的声明段:
Dim Counters (14) As Integer '15 个元素。
Dim Sums (20) As Double '21 个元素。
&nbs ......
本程序有一菜单开始,里面有查询,删除,修改,添加,程序不一一列出,只写出基本的过程,连接数据库采用标准模块:
'Public publicstr As String
Public conn As ADODB.Connection
Public rs As ADODB.Recordset
Public Sub main() '数据库连接共享函数
Set conn = New ADODB.Connection
conn.Open "Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=plgl;Initial Catalog=plgl"
'publicstr = "Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=plgl;Initial Catalog=plgl" '共享连接字符串
main_pfm.Show
End Sub
添加程序:
Set rs = New ADODB.Recordset
If Trim(Text1(0).Text) = "" Then
smeg = "配方号不能为空!!!"
MsgBox smeg, vbOKCancel + vbExclamation, "警告"
Text1(0).SetFocus
Else
If Not IsNumeric(Text1(0).Text) Then
smeg = "A添加剂非数字!!!"
......
VB中的Unicode 和 Ansi 格式
Visual Basic 32-bit 版本的字串处理采用 Unicode,也就是说字串在 VB 内部是以Unicode 的格式来存放。何谓 Unicode?简单的说,就是每一个字符都是以 2-byte 的形式表示,而每个「实体字符」就是一个「字符」。因此,
Len("大家好")
Len("abc")
所返回的值都是 3,因为「大」和「a」都是一个字符。
但是这对一些中文字串处理,例如纯文字的数据文件,却是一个大灾难,因为你必须以byte 来定位每个字符,可是 Unicode 却把一切的处理全搞砸了。例如:
Len("Good Morning") 返回 12,而
Len("今天天气很好") 返回 6
对初学者而言,好不容易能使用 VB 来写程序已经是件了不起的事了,却马上在中文处理上挨了一记闷棍,所受到的打击实在不小。但是不要怕,事实上只要再多了解一些指令,就可以把中文处理的问题解决了。
是什么指令呢?最重要的莫过于 StrConv 了。StrConv 函数的语法为:StrConv(待转换字串, 转换格式)
其中转换格式在这里用到的是:
&nb ......
Private Sub PrintTxt(txt As String, ConWidth As Long, LeftPosition As Long)
Dim str As String
Dim str1 As String
Dim len1 As Long
str = txt
len1 = ConWidth
Do While Len(str) > 0
str1 = str
Do While len1 > 0 And Printer.TextWidth(str1) - ConWid > len1
str1 = Left(str1, Len(str1) - 1)
Loop
Printer.CurrentX = LeftPosition
Printer.Print str1 '打印
If Len(str1) = 0 Then Exit Do '不匹配
str = Mid(str, Len(str1) + 1) '截断!
Loop
End Sub
Private Sub ......
VB中调用MSN 6.2 API函数
了解这方面内容的起因是早上有位朋友让我看一段关于MSN开发程序,现在无法运行,我打开工程发现是针对4.7编写的,而他的计算机安装的6,2,因为我也用6.2所以我在VB中查看了一下,发现是缺少Messenger Type Library。但是多了Messenger API Type Library,可能是做为Messenger Type Library的替代,但是发现它的功能不如以前的Messenger Type Library 全面,起码我现在就发现它不能修改本地的MyFriendlyName,不明白为什么把它弄成只读的,MyStatus是可写。
下面简单用VB距离说明怎么调用它:
首先当然是引用对象Messenger API Type Library了。
然后声明一个对象MessengerAPI.Messenger:
Private WithEvents oMSN As MessengerAPI.Messenger
我们需要的东西都在这里边,简单介绍几个:
MyContacts:IMessengerContacts 对象
MyFriendlyName: 当前的昵称
MyGroups: IMessengerGroupss对象
MyPhoneNumber:返回电话号码
MyProperty:现在没有使用
MyServiceId :返回Service id应该是{9b017612-c9f1-11d2-8d9f-0000f875c541}]
MyServiceName:返回Service name应该是 .NET Messenge ......