StrToInt && StrToHex && IntToString && 编辑框格式
StrToInt && StrToHex && IntToString && 编辑框格式
以前写过类似的函数,最近又用到了,简单总结一下,以备后用。
1 StrToInt
此函数将编辑框中输入的字符串,如“1001”,转化为十进制数字,如1001。
int StrToInt(const char* str)
{
int num = 0;
BOOL RIGHT = FALSE;
if(str!=NULL)
{
const char* digit = str;
while((* digit != '/n'))
{
if(*digit >= '0' && *digit <= '9')
{
num = num * 10 +(*digit - '0');
digit++;
RIGHT = TRUE;
}
else
{
break;
}
}
}
if(RIGHT == FALSE)
{
num = -1;
}
return num;
}
2 当初在使用的时候,这两个函数是在MFC框架下,结合编辑框使用的,主要用来将编辑框中输入的数字字符串转换为十六进制数字,从而在程序中进行处理。
void StrToHex(CString str,int outlen,unsigned char *databuff)
{
int temp=0;
for (int i = 0; i < outlen; i++)
{
CString StrChar = str.Mid(2 * i,2);
sscanf_s(StrChar,"%x",&temp);
databuff[i] = (unsigned char)temp;
}
}
void StrToHex2(CString str,int outlen,unsigned char *databuff)
{
int temp=0;
for (int i = 0; i < outlen; i++)
{
CString StrChar = str.Mid(2 * i,2);
sscanf_s(StrChar,"%d",&temp);
databuff[i] = (unsigned char)temp;
}
}
3 下面的函数是将十进制数字转换为十六进制数字,或者说是字符的形式,将十进制数字转换后输出到对应的编辑框中显示出来。
CString IntToString(int dec)
{
switch (dec)
{
case 0:
return "0";
break;
case 1:
return "1";
break;
case 2:
return "2";
break;
case 3:
return "3";
break;
case 4:
return "4";
break;
case 5:
return "5";
break;
case 6:
return "6";
break;
case 7:
return "7";
case 8:
return "8";
case 9:
return "9";
break;
case 10:
return "A";
break;
case 11:
return "B";
break;
case 12:
return "C";
break;
case 13:
return "D";
break;
case 14:
return "E";
break;
case 15:
return "F";
break;
default:
return "";
}
}
例子:
.h File:
public:
CEdit m_edit_p1;
public:
CString m_p1;
.cpp File:
DDX_Control(pDX, IDC_EDIT1, m_edit_p1); BYTE temp1[2];
BYTE temp_0=0,temp_1=0;
BYTE hex1[2];
CString str1,str2,str3,str0;
StrToHex(m_p1,1,hex1);
for(int com1=0;com1<1;com1++)
{
temp1[com1]=hex1[com1];
}
if(temp1[0]>=0 && temp1[0]<=63)
{
temp1[0]=temp1[0]+1;
temp_1=temp1[0]/16;
temp_0=temp1[0]%16;
str0=IntToString(temp_0);
str1=IntToString(temp_1);
m_edit_p1.SetWindowText( str1+str0 );
}
4 限制编辑框输入格式的函数:
void FormatInput()
{
char tmp;
int TxtLen = 0;
UpdateData(TRUE);
TxtLen = m_p3.GetLength();
if (TxtLen == 0)
{
return;
}
if (TxtLen > 2)
{
m_p3.Delete(TxtLen -1);
}
else
{
tmp = m_p3.GetAt(TxtLen - 1);
if ((tmp > 'A' - 1) && (tmp < 'F' + 1)||
(tmp > 'a' - 1) && (tmp < 'f' + 1)||
(tmp > '0' - 1) && (tmp < '9' + 1))
{
m_p3.MakeUpper();
}
else
{
m_p3.Delete(TxtLen - 1);
MessageBox("Please input the right data!""/n" "0 ~ 9 ,A(a) ~ F(f)"); }
}
UpdateData(FALSE);
UpdateData(TRUE);
((CEdit *)GetDlgItem(IDC_EDIT6 ))->SetSel(m_p3.GetLength(),
m_p3.GetLength(),TRUE);
}
澳门新濠天地官网。
把字符串转化为整数的方法
把字符串转化为整数的⽅法字符串转化为整数可能是实际编程中最常⽤到的⽅法了,因为因为string很容易通过下标对每⼀位的数字进⾏操作,但是却没办法实现int的加减乘除等,所以在实际编程中经常需要先⽤string 存下数据,操作完后再转化为int类型有两种⽐较实⽤的⽅法可以实现⽅法⼀:⾃⼰写⼀个函数来实现class Solution {public:int StrToInt(string str){int length=str.length();//先计算字符串的长度if(length==0){return 0;}int result=0;int flag=1;int i=0;if(str[i]=='-')//只能是在数据的⾸位输⼊符号,所以只需要⼀次判断即可{flag=-1;i++;}if(str[i]=='+'){flag=1;i++;}while(str[i]!='\0'){if(str[i]==' ')//删掉数字前⾯的空格,因为不知道前⾯输⼊了多少个空格所以需要在while循环中{i++;}if(str[i]>='0'&&str[i]<='9'){result=(result*10+flag*(str[i]-'0'));i++;}else{return 0;}}return result;}}; ⽅法⼆:调⽤库函数atio#include<iostream>#include<string>#include<stdlib.h>using namespace std;int main(){string str;cin>>str;int result=0;result=atoi(str.c_str());cout<<result<<endl;return 0;} stio函数的头⽂件是#include<stdlib.h>string 是C++ STL定义的类型,atoi是 C 语⾔的库函数,所以要先转换成 char* 类型才可以⽤ atoi。
2组件异常文件鼠标键盘习题2013
《组件、文件、鼠标、键盘》习题一、单项选择题1.通常控制组件在窗体中的可见属性是()。
A.Visible B.ShowHintC.Showing D.Hint2.用于显示编辑框文本内容的属性是()。
A.Text B.CaptionC.BackStyle D.AutoSize3.单击鼠标左键时触发组件的事件是()。
A.OnDbClick B.OnMouseUpC.OnClick D.OnMouseDown4.窗体上放置一个TEdit组件,并定义了该组件的OnEnter事件,下列叙述中正确的是()。
A.当鼠标在窗体上移动时触发TEdit组件的OnEnter事件B.当鼠标移动到窗体上时触发TEdit组件的OnEnter事件C.当该组件中的输入完成后回车时触发该组件OnEnter事件D.当该组件获得焦点时触发该组件OnEnter事件5.与Readln语句对应的输出语句为()。
A.Rread B.OutputC.Print D.Writeln6.用于建立菜单项的下划线访问键(如F)的字符是()。
A. ^B. &C. #D. @7.下列选项中,可以派生出所有可视化的VCL控件的基类是()。
A.TControl B.TWidgetControlC.TWinControl D.TWindowControl8.下列叙述中正确的是()。
A.对于一组TCheckBox组件,用户只能选择其中的一个B.对于一组TCheckBox组件,用户可以选择其中的一个或多个C.对于一组TRadioButton组件,用户可以选择其中的一个或多个D.对于一组TRadioButton组件,用户可以选择其中的多个9.滚动条组件中表示滑块位置的属性是()。
A.PageSize B.KindC.Orientation D.Position10.下列有关Try语句异常处理的说法不正确的是()。
A. 在Try…Except…End语句中,可以使用多个Except语句处理多个不同的异常情况。
delphi 常用函数大全
ExtractFileDir 函数 返回驱动器和路径
ExtractFileExt 函数 返回文件的后缀
ExtractFileName 函数 返回文件名
ExtractFilePath 函数 返回指定文件的路径
New 函数 建立新的动态变量并设置一指针变量指向他
NewStr 函数 在堆栈上分配新的字符串
Now 函数 返回当前的日期和时间
Odd 测试参数是否为奇数 ofs(x)
OnActivate 事件 焦点移到窗体上时触发
OnClick 事件 单击窗体空白区域触发
OnDblClick 事件 双击窗体空白区域触发
FileGetDate 函数 返回文件的DOS日期时间标记
FileOpen 命令 用指定的存取模式打开指定的文件
FilePos 函数 返回文件的当前指针位置
FileRead 命令 从指定的文件读取
FileSearch 命令 在目录中搜索指定的文件
FileSeek 函数 改变文件的指针
FileSetAttr 函数 设置文件属性
Chr 函数 返回指定序数的字符 数字==> ASCII
CloseFile 命令 关闭打开的文件
Columns 属性 显示的列数
CompareStr 函数 比较字符串(区分大小写)
Concat 函数 合并多个字符串
Continue 命令 继续for、while、repeat的下一个循环
FindNext 命令 返回与文件名及属性匹配的下一入口
FloatToDecimal 函数 将浮点数转换为十进制数
delphi 16进制转浮点数
delphi 16进制转浮点数
在Delphi中,要将16进制数转换为浮点数,你可以使用以下方法:
首先,将16进制数转换为整数,然后再将整数转换为浮点数。
假设你有一个16进制数值为HexValue,你可以使用StrToInt函数将其转换为整数:
pascal.
var.
HexValue: string;
IntValue: Integer;
FloatValue: Single;
begin.
HexValue := '3F800000'; // 举例一个16进制数值。
IntValue := StrToInt('$' + HexValue);
FloatValue := PSingle(@IntValue)^;
ShowMessage(FloatToStr(FloatValue)); // 显示浮点数值。
end;
在这个例子中,'3F800000'是一个16进制数值,使用
StrToInt函数将其转换为整数。
然后,通过PSingle类型的指针将
整数转换为浮点数。
最后,使用FloatToStr函数将浮点数值转换为
字符串并显示出来。
另外,你也可以使用Delphi的HexToBin函数将16进制数转换
为二进制数,然后再将二进制数转换为浮点数。
这种方法更加直接,但需要一些额外的处理步骤。
总之,以上是在Delphi中将16进制数转换为浮点数的方法,
希望能对你有所帮助。
组态王重要功能简单使用介绍
组态王重要功能简单使用介绍一、图库1、图形建立动画连接并合成图素的方式创建的图库精灵,在画面中引用后,其属性界面中动画连接属性的变量改变后,可以任意移动它的位置,但不能再调整其大小,否则动画连接属性的变量会变回到原先的变量。
为避免误操作,可以把图库精灵转换成普通图素后再定义属性变量。
2、一般情况下,含有图库精灵的画面会有许多操作上的限制。
如,为了在画图过程中把常用的图块创建为图库精灵,但图块中的图素要求不能包含引用到的图库精灵。
所以在画图过程中引用到的图库精灵应首先转化成普通图素。
转化成普通图素后,还可以个性化定义动画,而图库精灵定义动画比较死板。
二、动画制作1、组态王软件对稍微复杂的动画,如旋转轮、搅拌叶片模拟动作等没有现成的图库引用,都必须自己设计,无论采用图素基本旋转功能还是图素显示与隐藏方式实现视觉上的动画效果,绝大多数情况下都必须使用到内存变量。
一般一个动画使用到一个内存变量。
当软件点数较少,变量使用较紧张时,就不能为了动画效果而定义大量的内存变量。
动画的实现一般要求有重复计数功能的表达式支持,这就要定义专用的内存整型变量(为了使动画更流畅,可以定义内存实型变量,以小于1的阶梯变化),通过命令语言来实现重复计数功能。
为了减少变量的使用数,就应对整个组态系统的动画效果进行大的归类,如旋转、移动、闪烁、缩放等,每一类定义一个或多个(尽量少)的内存实型变量。
使用方法为:1、在应用程序命令语言中写出变量重复计数的程序,在某一窗口只要引用此变量来实现动画即可;2、在每个需要动画效果的窗口的画面命令语言中写出变量重复计数的程序。
方法1优点是每个变量只要书写一次计数程序,缺点是整个监控系统的同类型的动画效果相同,制作也不灵活。
方法2的优点是每个窗口中变量计数的变化量可以不一样,这样使得制作动画更方便灵活,每个窗口动画效果可根据需要灵活实现,缺点是同一个变量要多次书写计数程序。
另外必须注意的是:如果同时多个窗口都要实现同类型的动画效果,也就是同一个变量在多个窗口使用。
Delphi 常用函数
一、数据类型转换函数
在我们编写程序当中,根据不同情况,会使用到多种数据类型。当要对不同的类型进行操作时,必须要将不同的类型转换成同样的类型。因此熟练地掌握数据类型的转换是非常重要的。
1.FloatToStr
功能说明:该函数用于将“浮点型”转换成“字符型”。
12.RightStr(所在单元:StrUtils)
功能说明:返回字符串右边指定个数的新字符(串)。该函数有两个参数。第一个参数为完整的字符串,第二个参数为指定个数。
参考实例:
var
S, A: String;
begin
S := 'MSN Messenger';
end;
14.StrPCopy
功能说明:将字符串复制到字符数组中。该函数有两个参数。第一个参数为“目标数组”,第二个参数为“字符串”。
参考实例:
var
arrChar: array[0..255] of Char; // 这里声明了长度为256的Char型数组
begin
参考实例:
Edit1.Text := IntToHex('100', 2);
执行结果,Edit1.Text等于64。
注意:Delphi没有提供专门的“十六进制”转换为“十进制”的函数。使用StrToInt函数可以实现这个功能。具体代码是:I := StrToInt('S/' + '64'); 这时I等于100。加上一个'S/'即可将“十六进制”转换为“十进制”。
参考实例:
var
S: String;
begin
Delphi数据类型及一些转换函数
Delphi数据类型及转换函数帮助文件函数转换:DateTimeT oFileDate函数----将DELPHI的日期格式转换为DOS的日期格式DateTimeT oStr函数----将日期时间格式转换为字符串DateTimeT oString函数----将日期时间格式转换为字符串DateT oStr函数----将日期格式转换为字符串FileDateT oDateTime函数----将DOS的日期格式转换为DELPHI的日期格式FloatToDecimal函数----将浮点数转换为十进制数FloatToStr函数----将浮点数转换为字符串FloatToStr函数----将浮点数转换为字符串FloatToT ext函数----将给定的浮点数转换为十进制数FloatToT extFmt函数----将给定的浮点数转换为十进制数IntToHex函数----将整型数转换为十六进制数IntToStr函数----将整型数转换为字符串StringToWideChar函数----将ANSI字符串转换为UNICODE字符串StrToDate函数----将字符串转换为日期格式StrToDateTime函数----将字符串转换为日期/时间格式StrToFloat函数----将给定的字符串转换为浮点数StrToInt函数----将字符串转换为整型StrToIntDef函数----将字符串转换为整型或默认值StrToTime函数----将字符串转换为时间格式T extToFloat函数----将字符串(以NULL结束的格式)转换为浮点数TimeToStr函数----将时间格式转换为字符串VarToDateTime函数----将给定的变体转换为日期时间WideCharLenT oString函数----将ANSI字符串转换为UNICODE字符串WideCharT oString函数----将UNICODE字符串转换为ANSI字符串WideCharT oStrVar函数----将UNICODE字符串转换为ANSI字符串变量数据类型:(1) 基本数据类型:a、整数类型:(通用类型<32位>:Integer-有符号;Cardinal-无符号)具体:有符号:Shortint<8位>,Smallint<16位>,Longint<32位 >无符号:Byte<8位>,Word<16位>,LongWord 或DWord<32位 >b、字符类型:(通用类型<8位>:Char-与AnsiChar等同)具体:AnsiChar<8位> :主要存放Ansi字符WideChar<16位>:主要存放Unicode字符c、布尔类型:(通用类型<8位>:Boolean-与ByteBool等同)具体:ByteBool<8位>,WordBool<16位>,LongBool<32位>不同的布尔类型主要用于其它编程语言及不同windows系统兼容。
S7-300 unlock 代码
SFC块你是打不开的,除非特殊的解密软件,这是系统功能块,是SIEMENS的一些精髓的东西,是不允许被看到的,就算解开了大家也不一定看得懂。
FC/FB等块的加密可以认为操作的,需要你了解如下对块加密的操作(解密的操作就是将加密的操作中“KNOW_HOW_PROTECT”去掉即可)实现程序块保护:1.打开程序编辑窗口;2.将要进行加密保护的程序块生成转换为源代码文件(通过选择菜单File—>Generatesource生成);3.关闭您的程序块,并在SIMATICManager项目管理窗口的source文件夹中打开上一步所生成的source文件;4.在程序块的声明部分,TITLE行下面的一行中输入“KNOW_HOW_PROTECT”;5.存盘并编译该source文件(选择菜单FileàSave,FileàCompile);现在就完成了您程序块的加密保护;取消对程序块的加密保护:1.打开程序块的Source源文件;2.删除文件中的KNOW_HOW_PROTECT;3.存盘并编译该source文件;解密OK另外,如果你没有目前需要解密的程序块对应的source源文件,你是无法对已经加密的程序块进行编辑的。
S7-300 unlock 代码unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, DB, Dbf, LMDCustomScrollBox, LMDListBox,LMDWebURLLabel;typeTForm1 = class(TForm)GroupBox1: TGroupBox;Button2: TButton;OpenDialog1: TOpenDialog;GroupBox2: TGroupBox;LMDListBox1: TLMDListBox;Dbf1: TDbf;Dbf2: TDbf;GroupBox3: TGroupBox;LMDListBox2: TLMDListBox;GroupBox4: TGroupBox;GroupBox5: TGroupBox;Button3: TButton;Button4: TButton;GroupBox6: TGroupBox;Button5: TButton;Button6: TButton;GroupBox9: TGroupBox;CheckBox1: TCheckBox;CheckBox2: TCheckBox;CheckBox3: TCheckBox;CheckBox4: TCheckBox;Label1: TLabel;Label2: TLabel;procedure Button2Click(Sender: TObject);procedure LMDListBox1Select(Sender: TObject);procedure Button3Click(Sender: TObject);procedure Button4Click(Sender: TObject);procedure CheckBox1Click(Sender: TObject);procedure CheckBox2Click(Sender: TObject);procedure CheckBox3Click(Sender: TObject);procedure CheckBox4Click(Sender: TObject);procedure LMDListBox1KeyPress(Sender: TObject; var Key: Char);procedure Button5Click(Sender: TObject);procedure Button6Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementationprocedure MySub;varI: integer;BlocksType, BlocksNumber, Password, RD: string;beginif FileExists(Form1.LMDListBox1.ItemPart(Form1.LMDListBox1.ItemIndex, 6) +'\SUBBLK.DBF') thenbeginForm1.Dbf1.TableName := Form1.LMDListBox1.ItemPart(Form1.LMDListBox1.ItemIndex, 6) + '\SUBBLK.DBF';Form1.Dbf1.Active := true;Form1.Dbf1.First;Form1.LMDListBox2.Clear;Form1.Button3.Enabled:=false;Form1.Button4.Enabled:=false;Form1.Button5.Enabled := false;Form1.Button6.Enabled:= false;Form1.LMDListBox2.Enabled:=true;Form1.CheckBox1.Enabled:=true;Form1.CheckBox2.Enabled:=true;Form1.CheckBox3.Enabled:=true;Form1.CheckBox4.Enabled:=true;if Form1.CheckBox1.Checked thenbeginfor I := 1 to Form1.Dbf1.ExactRecordCount dobeginBlocksType := Form1.Dbf1.FieldByName('SUBBLKTYP').Value;BlocksNumber := Form1.Dbf1.FieldByName('BLKNUMBER').Value;if Form1.Dbf1.FieldByName('PASSWORD').Value = 0 thenPassword := 'No'elseRD := inttostr(I);if BlocksType = '00008' thenForm1.LMDListBox2.Items.Add('OB' + inttostr(strtoint(BlocksNumber)) + ';' + Password + ';;' + RD);Form1.Dbf1.Next;end;end;Form1.Dbf1.First;if Form1.CheckBox2.Checked thenbeginfor I := 1 to Form1.Dbf1.ExactRecordCount dobeginBlocksType := Form1.Dbf1.FieldByName('SUBBLKTYP').Value;BlocksNumber := Form1.Dbf1.FieldByName('BLKNUMBER').Value;if Form1.Dbf1.FieldByName('PASSWORD').Value = 0 thenPassword := 'No'elsePassword := 'Yes';RD := inttostr(I);if BlocksType = '00014' thenForm1.LMDListBox2.Items.Add('FB' + inttostr(strtoint(BlocksNumber)) + ';' + Password + ';;' + RD);Form1.Dbf1.Next;end;end;Form1.Dbf1.First;if Form1.CheckBox3.Checked thenbeginfor I := 1 to Form1.Dbf1.ExactRecordCount dobeginBlocksType := Form1.Dbf1.FieldByName('SUBBLKTYP').Value;BlocksNumber := Form1.Dbf1.FieldByName('BLKNUMBER').Value;if Form1.Dbf1.FieldByName('PASSWORD').Value = 0 thenPassword := 'No'elsePassword := 'Yes';RD := inttostr(I);if BlocksType = '00012' thenForm1.LMDListBox2.Items.Add('FC' + inttostr(strtoint(BlocksNumber)) + ';' + Password + ';;' + RD);Form1.Dbf1.Next;end;end;Form1.Dbf1.First;if Form1.CheckBox4.Checked thenbeginfor I := 1 to Form1.Dbf1.ExactRecordCount dobeginBlocksType := Form1.Dbf1.FieldByName('SUBBLKTYP').Value;BlocksNumber := Form1.Dbf1.FieldByName('BLKNUMBER').Value;if Form1.Dbf1.FieldByName('PASSWORD').Value = 0 thenelsePassword := 'Yes';RD := inttostr(I);if BlocksType = '00010' thenForm1.LMDListBox2.Items.Add('DB' + inttostr(strtoint(BlocksNumber)) + ';' + Password + ';;' + RD);Form1.Dbf1.Next;end;end;Form1.Dbf1.First;Form1.Dbf1.Active := false;if Form1.LMDListBox2.Count > 0 thenbeginForm1.Button3.Enabled := true;Form1.Button4.Enabled:= true;Form1.Button5.Enabled := true;Form1.Button6.Enabled:= true;Form1.LMDListBox2.ItemIndex := 0;end;end;end;{$R *.dfm}procedure TForm1.Button2Click(Sender: TObject);varI,ID: integer;OBs, FBs, FCs, DBs, DirectoryName,FileName: string;beginif OpenDialog1.Execute thenbeginFileName:= OpenDialog1.FileName;if (FileExists(ExtractFilePath(FileName) + 'OMBSTX\OFFLINE\BSTCNTOF.DBF')) and (FileExists(ExtractFilePath(FileName) + 'HRS\S7RESONL.DBF')) thenbeginDbf1.TableName := ExtractFilePath(FileName) + 'OMBSTX\OFFLINE\BSTCNTOF.DBF'; Dbf2.TableName := ExtractFilePath(FileName) + 'HRS\S7RESONL.DBF';Dbf1.Active := true;Dbf2.Active := true;Dbf1.First;Dbf2.First;LMDListBox1.Clear;for I:= 1 to Dbf1.ExactRecordCount dobeginOBs := Dbf1.FieldByName('ANZOB').Value;FBs := Dbf1.FieldByName('ANZFB').Value;FCs := Dbf1.FieldByName('ANZFC').Value;DBs := Dbf1.FieldByName('ANZDB').Value;ID := Dbf1.FieldByName('ID').Value;DirectoryName := ExtractFilePath(FileName) + 'OMBSTX\OFFLINE\' + Format('%.8x', [ID]);LMDListBox1.Items.Add(Dbf2.FieldByName('NAME').Value + ';' + OBs + ';' + FBs + ';' +FCs + ';' + DBs + ';;' + DirectoryName);Dbf1.Next;Dbf2.Next;end;Dbf1.Active := false;Dbf2.Active := false;end;end;end;procedure TForm1.LMDListBox1Select(Sender: TObject);beginMySub;end;procedure TForm1.Button3Click(Sender: TObject);varI, J: integer;beginDbf1.Active := true;Dbf1.First;J := strtoint(LMDListBox2.ItemPart(LMDListBox2.ItemIndex, 3)); for I := 1 to J - 1 dobeginDbf1.Next;end;J := LMDListBox2.ItemIndex;Dbf1.Edit;Dbf1.FieldByName('PASSWORD').Value := 3;Dbf1.Post;Dbf1.Active := false;MySub;LMDListBox2.ItemIndex := J;end;procedure TForm1.Button4Click(Sender: TObject);varI, J: integer;beginDbf1.Active := true;Dbf1.First;J := strtoint(LMDListBox2.ItemPart(LMDListBox2.ItemIndex, 3)); for I := 1 to J - 1 dobeginDbf1.Next;end;J := LMDListBox2.ItemIndex;Dbf1.Edit;Dbf1.FieldByName('PASSWORD').Value := 0;Dbf1.Post;Dbf1.Active := false;MySub;LMDListBox2.ItemIndex := J;end;procedure TForm1.CheckBox1Click(Sender: TObject);beginMySub;end;procedure TForm1.CheckBox2Click(Sender: TObject);beginMySub;end;procedure TForm1.CheckBox3Click(Sender: TObject);beginMySub;end;procedure TForm1.CheckBox4Click(Sender: TObject);beginMySub;end;procedure TForm1.LMDListBox1KeyPress(Sender: TObject; var Key: Char); beginMySub;end;procedure TForm1.Button5Click(Sender: TObject);varI: integer;beginDbf1.Active := true;Dbf1.First;for I := 0 to Dbf1.ExactRecordCount - 1 dobeginDbf1.Edit;Dbf1.FieldByName('PASSWORD').Value := 3;Dbf1.Post;Dbf1.Next;end;Dbf1.Active := false;MySub;end;procedure TForm1.Button6Click(Sender: TObject);varI: integer;beginDbf1.Active := true;Dbf1.First;for I := 0 to Dbf1.ExactRecordCount - 1 dobeginDbf1.Edit;Dbf1.FieldByName('PASSWORD').Value := 0;Dbf1.Post;Dbf1.Next;end;Dbf1.Active := false; MySub;end;end.。
delphi收发短信
delphi收发短信介绍一下这段代码,这段代码绝对不是网上那些不能编译,或是没有价值的东西,这些代码都是本人亲测,能够收发短信的代码,相信是经典的不可多得的代码unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs,Unit2, StdCtrls, ExtCtrls;//请务必下载PCommMonitor6来帮助理解或者是自己分析,PCommMonitor6是一款串口监视软件typeTForm1 = class(TForm)Button1: TButton;Memo1: TMemo;Edit1: TEdit;Edit2: TEdit;Label1: TLabel;procedure FormCreate(Sender: TObject);procedure FormDestroy(Sender: TObject);procedure Button1Click(Sender: TObject);private{ Private declarations }publicprocedure msgok(ok:boolean);procedure laixin(haoma:string;neirong:string);{ Public declarations }end;varForm1: TForm1;shouji:Tshouji;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);beginshouji:=tshouji.create;shouji.ok:=msgok;shouji.arr:=laixin;end;procedure TForm1.FormDestroy(Sender: TObject);beginshouji.destroy;end;procedure TForm1.msgok(ok:boolean); //发送完毕事件beginif ok thenbeginmemo1.Lines.Add('发送成功')end elsebeginmemo1.Lines.Add('发送失败');end;end;procedure ixin(haoma:string;neirong:string); //收到消息事件beginmemo1.Lines.Add('=========收到信息=========');memo1.Lines.Add('信息号码为:'+haoma);memo1.Lines.Add('收到信息为:'+neirong);memo1.Lines.Add('==========================' );end;procedure TForm1.Button1Click(Sender: TObject);//调用发送方法beginshouji.sendx(edit1.Text,edit2.Text);memo1.Lines.Add('=========发送信息=========');memo1.Lines.Add('发送号码为:'+edit1.Text);memo1.Lines.Add('发送信息为:'+edit2.Text);memo1.Lines.Add('==========================' );end;end./////////////////////////////////////////////////////////////////// /////////////////////////////////////////////unit Unit2;//中兴u230通行模块,中兴u230实际价格是320元,带pc套件,能当modem,功能是相当于六七百的高档手机的//但美中不足就是移动定制手机interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs,AdPort,ExtCtrls;typeTarrive=procedure (haoma:string;neirong:string) of object;//接受信息的指针Tsendok=procedure (ok:boolean) of object;//判断信息发送情况指针Tshouji=class(Tcomponent)privateFarr:Tarrive;Fok:Tsendok;ComPort: TApdComPort;Time:TTimer;procedure timetime(Sender: TObject);//主要是用于开始的测试连接procedure TriggerAvail(CP: TObject; Count: Word);//串口接受信息publicconstructor create;destructor destroy;override;procedure sendx(haoma:string;neirong:string);//发送信息的方法publishedproperty arr:Tarrive read Farr write Farr;//接受信息的事件property ok:Tsendok read Fok write Fok;//信息发送情况end;xinxi=record //暂时存放信息haoma:string; //信息号码xinxi:string;//信息内容end;varmyxinxi:xinxi;implementationconstructor Tshouji.create;begincomport:=TApdComPort.Create(self);Number:=9;//我的U230手机串口号是9 ,有的可能是4或5comport.OnTriggerAvail:=TriggerAvail;comport.AutoOpen:=true;comport.Open:=true;time:=ttimer.Create(self);time.Interval:=1000;time.OnTimer:=timetime;time.Enabled:=true;end;destructor Tshouji.destroy;begincomport.Output:='AT+ZPCSTART=0'#13;//断开与u230连接comport.Destroy;time.Destroy;inherited;end;function_Ucx2T oText(buf:pbytearray;len:integer):string;//pdu解码vartemp,dest:array [0..260] of byte;i:integer;beginlen:=len div 2;for i:=0 to len-1 dobegintemp[i*2]:=buf[i*2+1];temp[i*2+1]:=buf[i*2];temp[i*2+2]:=0;temp[i*2+3]:=0;end;widechartomultibyte(cp_acp,0,pwidechar(@temp[0]),-1,lptstr(@dest[0]),260,nil,nil);result:=strpas(@dest[0]);end;function SEncodeMobNO(SmobNO: string): string;//手机号码进行PDU编码。
delphi安装cad控件delphi一些语法及实例
delphi安装cad控件我下载的是使用版本,用的Delphi版本是Delphi7,在下载的文件包目录\CADImportVCLv6.1产品试用版\cadimportvcl\Delphi\Lib7有个sgGrpVw7.dpk文件,用Delphi打开后,先点compile,然后再install就可以了,操作的时候貌似会出现message提示有warning,不过貌似不影响安装。
下面附加Delphi安装第三方控件的方法供参考:由于组件提供的方式不同,所以安装的方法也是不一样的,下面就目前常见的各种形式的组件的安装方法介绍一下。
1只有一个DCU文件的组件。
DCU文件是编译好的单元文件,这样的组件是作者不想把源码公布。
一般来说,作者必须说明此组件适合Delphi的哪种版本,如果版本不对,在安装时就会出现错误。
也正是因为没有源码,给使用者带来了不便,那就是一旦Delphi版本升级,此组件就不能再使用了,当然有的作者给出了几种版本的DCU文件,用户根据需要选择使用。
这样的组件的安装方法是:在Component菜单中,选择install component,在对话框中的"into existing package"页中,单击“Unit file name”后的“Browse”按钮,在打开的文件对话框中,将“文件类型”设定为*.dcu,找到要安装的DCU文件,按OK按钮返回"into existing package"页后再按OK按钮就可以安装了。
注意,此时Delphi会提示dclusr40.dpk将被重建,是否继续,OK就可以了。
这里是将组件安装到dclusr40.dpk包中,此包从文件名上可以看出是用户自定义组件包,先安装到这个包中吧,下面再讲有关注意事项。
安装完毕会有已经将组件注册完的提示信息以及安装到哪个组件页中的信息等,到组件面板上看看,一般会出现一个新的组件页,其中有刚安装的组件。
