delphi INI文件
INI 文件读写
filecreate('路径加文件名');//创建一个文件。
(1) INI文件的结构:
;这是关于INI文件的注释部分
[节点]
关键字=值
...
INI文件允许有多个节点,每个节点又允许有多个关键字, “=”后面是该关键字的值(类型有三种:字符串、整型数值和布尔值。其中字符串存贮在INI文件中时没有引号,布尔真值用1表示,布尔假值用0表示)。注释以分号“;”开头。
(2) INI文件的操作
1、 在Interface的Uses节增加IniFiles;
2、 在Var变量定义部分增加一行:inifile:Tinifile;然后,就可以对变量myinifile进行创建、打开、读取、写入等操作了。
3、 打开INI文件:inifile:=Tinifile.create('tmp.ini');
4、 读取关键字的值:
a:=inifile.Readstring('节点','关键字',缺省值);// string类型
b:=inifile.Readinteger('节点','关键字',缺省值);// integer类型
c:=inifile.Readbool('节点','关键字',缺省值);// boolean类型
其中[缺省值]为该INI文件不存在该关键字时返回的缺省值。
5、 写入INI文件:
inifile.writestring('节点','关键字',变量或字符串值);
inifile.writeinteger('节点','关键字',变量或整型值);
inifile.writebool('节点','关键字',变量或True或False);
当这个INI文件的节点不存在时,上面的语句还会自动创建该INI文件。
6、 删除关键字:
inifile.DeleteKey('节点','关键字');//关键字删除
inifile.EraseSection('节点');// 节点删除
7、 节点操作:
inifile.readsection('节点',TStrings变量);//可将指定小节中的所有关键字名读取至一个字符串列表变量中;
inifile.readsections(TStrings变量);//可将INI文件中所有小节名读取至一个字符串列表变量中去。
inifile.readsectionvalues('节点',TStrings变量);//可将INI文件中指定小节的所有行(包括关键字、=、值)读取至一个字符串列表变量中去。
8、 释放:inifile.distory;或inifile.free;
创建了一个myini.ini文件,有一个名为newini的小节,有3个关键字“用户名称”“已运行时间”“是否正式用户”。运行效果,可以在edit1里边填入“用户名称”;edit2显示时间,不可以改变数值;checkbox1通过打勾,保存时间和“用户名称”进入myini.ini文件里边,重新打开应用程序时,显示的时保存下来的时间和填入的“用户名称”,如果在myini.ini文件里边修改,效果和在程序运行过程中修改时一样的。
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,inifiles, StdCtrls, ExtCtrls;
{调用inifiles 类} type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Timer1: TTimer;
CheckBox1: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end; var
Form1: TForm1; implementation
var
myinifile:TInifile;
{定义一个类的实例}
{$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var
filename:string; begin
{下面两行的书写形式,在应用程序的路径下创建ini文件}
filename:=ExtractFilePath(paramstr())+'myini.ini';
myinifile:=TInifile.Create(filename);
edit1.Text:=myinifile.ReadString('newini','用户名称','胡长浩');
edit2.text:=inttostr(myinifile.readinteger
('newini','已运行时间',));
checkbox1.Checked:=myinifile.readbool
('newini','是否正式用户',False);
{newini是小节名字,中间字段是关键字的名字,第三个字段是缺省值。当myini.ini不存在时,上面的语句自动创建这个文件,上边几行里的引号是单引号}
end; procedure TForm1.FormDestroy(Sender: TObject);
begin
myinifile.writestring('newini','用户名称',edit1.Text);
myinifile.writeinteger('newini','已运行时间',
strtoint(edit2.text));
myinifile.writebool('newini','是否正式用户',
checkbox1.Checked);
myinifile.Destroy; end; procedure TForm1.Timer1Timer(Sender: TObject);
begin
edit2.Text:=inttostr(strtoint(edit2.text)+);
end;
end.
使用 TIniFile
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses IniFiles; {uses 包含 TIniFile 的单元}
var
ini: TIniFile;
path: string; {ini 文件路径}
Section,Key: string; {分别表示 ini 文件的小节与关键字}
{
ini文件结构:
;注释
[小节名]
关键字=值
INI文件支持: string、integer、boolean、Date、Time、DateTime、Double 与二进制类型
string 值没有引号
boolean 的真假用 1、0 表示
}
procedure TForm1.FormCreate(Sender: TObject);
begin
path := ChangeFileExt(ParamStr(),'.ini');
ini := TIniFile.Create(path); {ini 对象建立需要文件路径参数, 如果缺少路径会默认Windows目录}
end;
//写入 ini 文件:
procedure TForm1.Button1Click(Sender: TObject);
begin
Section := 'AAA';
Key := 'AString';
ini.WriteString(Section,Key,'AAA-String');
Key := 'AInteger';
ini.WriteInteger(Section,Key,);
Key := 'ABoolean';
ini.WriteBool(Section,Key,True);
Key := 'ADate';
ini.WriteDate(Section,Key,Now);
Key := 'ATime';
ini.WriteTime(Section,Key,Now);
Key := 'ADateTime';
ini.WriteDateTime(Section,Key,Now);
Key := 'ADouble';
ini.WriteFloat(Section,Key,Pi); Section := 'BBB';
Key := 'BString';
ini.WriteString(Section,Key,'BBB-String');
Key := 'BInteger';
ini.WriteInteger(Section,Key,);
Key := 'BBoolean';
ini.WriteBool(Section,Key,True);
Key := 'BDate';
ini.WriteDate(Section,Key,Now);
Key := 'BTime';
ini.WriteTime(Section,Key,Now);
Key := 'BDateTime';
ini.WriteDateTime(Section,Key,Now);
Key := 'BDouble';
ini.WriteFloat(Section,Key,Pi); Section := 'CCC';
Key := 'CString';
ini.WriteString(Section,Key,'CCC-String');
Key := 'CInteger';
ini.WriteInteger(Section,Key,);
Key := 'CBoolean';
ini.WriteBool(Section,Key,False);
Key := 'CDate';
ini.WriteDate(Section,Key,Now);
Key := 'CTime';
ini.WriteTime(Section,Key,Now);
Key := 'CDateTime';
ini.WriteDateTime(Section,Key,Now);
Key := 'CDouble';
ini.WriteFloat(Section,Key,Pi);
{写入结果:
[AAA]
AString=AAA-String
AInteger=111
ABoolean=1
ADate=2007-12-17
ATime=22:06:23
ADateTime=2007-12-17 22:06:23
ADouble=3.14159265358979
[BBB]
BString=BBB-String
BInteger=222
BBoolean=1
BDate=2007-12-17
BTime=22:06:23
BDateTime=2007-12-17 22:06:23
BDouble=3.14159265358979
[CCC]
CString=CCC-String
CInteger=333
CBoolean=0
CDate=2007-12-17
CTime=22:06:23
CDateTime=2007-12-17 22:06:23
CDouble=3.14159265358979
}
end;
//读取 ini 文件:
procedure TForm1.Button2Click(Sender: TObject);
var
s: string;
i: Integer;
b: Boolean;
f: Double;
d: TDate;
t: TTime;
dt: TDateTime;
begin
s := ini.ReadString('BBB','BString',''); {最后一个参数是默认值}
i := ini.ReadInteger('BBB','BInteger',);
b := ini.ReadBool('BBB','BBoolean',False);
f := ini.ReadFloat('BBB','BDouble',);
d := ini.ReadDate('BBB','BDate',Now);
t := ini.ReadTime('BBB','BTime',Now);
dt := ini.ReadDateTime('BBB','BDateTime',Now);
ShowMessage(s); {BBB-String}
ShowMessage(IntToStr(i)); {}
ShowMessage(BoolToStr(b)); {-1(True)}
ShowMessage(FloatToStr(f)); {3.14159265358979}
ShowMessage(DateToStr(d)); {2007-12-17}
ShowMessage(TimeToStr(t)); {22:06:23}
ShowMessage(DateTimeToStr(dt)); {2007-12-17 22:06:23}
end;
//读入所有小节名到 TStrings:
procedure TForm1.Button3Click(Sender: TObject);
var
List: TStrings;
begin
List := TStringList.Create;
ini.ReadSections(List);
ShowMessage(List.Text);
{
AAA
BBB
CCC
}
List.Free;
end;
//读入指定小节的所有关键字到 TStrings:
procedure TForm1.Button4Click(Sender: TObject);
var
List: TStrings;
begin
List := TStringList.Create;
ini.ReadSection('AAA',List);
ShowMessage(List.Text);
{
AString
AInteger
ABoolean
ADate
ATime
ADateTime
ADouble
}
List.Free;
end;
//读入指定小节的所有关键字与值到 TStrings:
procedure TForm1.Button5Click(Sender: TObject);
var
List: TStrings;
begin
List := TStringList.Create;
ini.ReadSectionValues('BBB',List);
ShowMessage(List.Text);
{
BString=BBB-String
BInteger=222
BBoolean=1
BDate=2007-12-17
BTime=22:06:23
BDateTime=2007-12-17 22:06:23
BDouble=3.14159265358979
}
List.Free;
end;
//删除与添加
procedure TForm1.Button6Click(Sender: TObject);
begin
ini.DeleteKey('BBB','BString'); {删除关键字}
ini.EraseSection('CCC'); {删除小节}
// ini.UpdateFile; {保存到文件}
{添加小节与关键字或修改值, 直接写入即可}
end;
//其他功能
procedure TForm1.Button7Click(Sender: TObject);
var
b: Boolean;
s: string;
begin
b := ini.SectionExists('DDD'); {判断某个小节是否存在}
b := ini.ValueExists('AAA','AString'); {判断某个关键字的值是否存在}
s := ini.FileName; {获取文件名}
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ini.Free;
end;
end. ini 文件操作记要(): 使用 TMemIniFile
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
IniFiles;
var
ini: TMemIniFile;
procedure TForm1.FormCreate(Sender: TObject);
begin
ini := TMemIniFile.Create('c:\temp\test.ini');
end;
//写入
procedure TForm1.Button1Click(Sender: TObject);
begin
ini.WriteString('AAA','A1','AAA-String');
//其他也都和 IniFile 一样使用
// ini.WriteInteger();
// ini.WriteBool();
// ini.WriteDate();
// ini.WriteTime();
// ini.WriteDateTime();
// ini.WriteFloat();
// ini.WriteBinaryStream();
//ini.UpdateFile; //因为 TMemIniFile 是内存操作, 这样才能保存到文件
end;
//读出及其他
procedure TForm1.Button2Click(Sender: TObject);
var
s: string;
begin
s := ini.ReadString('AAA','A1','默认值');
ShowMessage(s); //AAA-String
//其他读入命令也都和 IniFile 一样使用
// ini.ReadInteger();
// ini.ReadBool();
// ini.ReadDate();
// ini.ReadTime();
// ini.ReadDateTime();
// ini.ReadFloat();
// ini.ReadBinaryStream();
//还有四个常用方法也是和 IniFile 一样的
//ini.DeleteKey();
//ini.EraseSection();
//ini.ReadSection();
//ini.ReadSections();
//另外有三个 IniFile 中没有的方法也容易使用
//ini.GetStrings(List: TStrings);
//ini.SetStrings(List: TStrings);
//ini.Rename(const FileName: string; Reload: Boolean);
//其中 Rename 中的第二个 Boolean 参数如果为 True 将会刷新读入
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ini.Free;
end;
end.
web桌面ini
var
Cmd:string;
Cmd:=myinifile.readstring('Shell','Cmd','App_Sys');
Cmd:=LeftStr(URL,)
Copy(URL,,length(URL))
利用INI文件实现界面无闪烁多语言切换
熊斌 landragon@tom.com
一、引言
越来越多的程序使用了多国语言切换,虽然DELPHI自带多语言包的添加和配置,但是那种方法在切换语言时界面会出现闪烁,而且实现起来很麻烦,这里我介绍给大家的是利用INI文件来读取界面的语种文字,用这种方法,不但简单易行,而且在切换的时候不会出现界面的闪烁。
二、InI文件格式说明
1、语种定义
[Language] //语言
DefaultLang = ChineseGB //界面的默认语种(InI文件名,不带扩展名)
Language = 语种 //菜单标题
ChineseGB = 简体中文 //相应语种文件名
ChineseBig = 繁体中文
English = 英文
⑴ 如果DefaultLang项没有设置,则为语种目录中所寻找到的InI的第一个文件,做为当前界面语种,所有Ini文件都要设置成一样;
⑵ Language为菜单界面上所显示的标题,不设置时,默认为‘Language’;
⑶ 如果Language以下项没有设置,则相应语种的菜单标题为文件名(不带扩展名)。
2、窗体界面定义
[FormName] //需要变换的窗口
.Caption = 演示窗体 //本窗口的属性,表示为:[窗口名].属性名 = 语言
Button1.Hint = 按钮说明 //控件的属性,表示为:控件名.属性名 = 语言
ComboBox1.Items = 简体中文||英文 //其中“||”为分隔符
注:⑴ 在InI文件中每行“//”开始的说明文字不要输入;
⑵ 对继承自TStrings的属性,其各个项目之间需用“||”分隔;
⑶ 设计思想来源于KeyZhang所编写的《多语言切换函数 For Delphi》组件。
三、实现原理
RTTI的基本设计思想是在运行时访问给定数据类型的信息,该类型可以是类也可以是简单的Pascal数据类型(int、string、char等)。本文便是通过RTTI在运行期,获取组件的相应属性,并进行动态设置,达到多语言切换功能。
四、各个函数的定义及实现
1、程序运行时,我们查找语种目录下所有的语言配置文件(*.ini),为了达到这个目的,我编写了如下的函数搜索目录下所有的语言配置文件的文件名,然后将文件名去掉ini扩展名保存返回:
procedure SearchLanguagePack (lngStrings: TStrings);
var
DosError: Integer;
SearchRec: TsearchRec;
begin
DosError := FindFirst (ExtractFilePath (ParamStr ()) 'Language\*.ini', faAnyFile, SearchRec);
while DosError = do
begin
{ 返回的文件名并去掉末尾的.ini字符 }
lngStrings.Add (ChangeFileExt (SearchRec.Name, ''));
DosError := FindNext (SearchRec);
end;
FindClose(SearchRec);
end;
2、实现界面的多语言切换函数:
function ChangeLanguage (Form: TForm; Lngfile: string): Boolean;
var
INIF: TIniFile; //InI文件
SL: TStringList; // InI文件中读出的相应窗体的信息
TmpSL: TStringList; //将每一行信息,以“=”分隔的信息
Key: string; //“=”左边的信息
Value: string; //“=”右边的信息
CompName: string; //组件名
CompProp: string; //组件属性名
I: Integer;
AComponent: TComponent; //相应组件
procedure Split (S: string; SplitChar: string; R: TStrings); //将字符串分隔
var
P, L, C: Integer;
begin
R.Clear;
L := Length (S);
//确定分隔符的长度,以便删除字符串中的相应字符
C := Length (SplitChar);
//循环分隔字符串
repeat
P := Pos (SplitChar, S);
//如果在字符串中没有找到分隔符,说明为最后一个
if P = then C := ;
R.Add (Copy (S, P C, L));
Delete(S, P, L);
until P = ;
end;
//设置相应属性值
procedure SetPropertyValue (AComponent: TComponent; sProperty, sValue: string);
var
PropInfo: PPropInfo;
AStrings: TStringList;
begin
if AComponent <> nil then
begin
PropInfo := GetPropInfo(AComponent, sProperty);
if PropInfo <> nil then
begin
case PropInfo.PropType^.Kind of
tkString, tkLString: //字符串属性
SetStrProp(AComponent, PropInfo, sValue);
tkInteger: //序数属性
SetOrdProp(AComponent, PropInfo, StrToInt(sValue));
else
if PropInfo.PropType^.Name = 'TStrings' then //列表属性
begin
AStrings := TStringList.Create;
try
Split (sValue, '||', AStrings);
SetOrdProp (AComponent, PropInfo, Integer (AStrings));
finally
AStrings.Free;
end; // end try
end; // end if PropInfo.PropType^.Name = 'TStrings'
end; // end case
end; // end if PropInfo <> nil
end; // end if AComponent <> ni
end;
begin
Result := True;
SL := TStringList.Create;
try
INIF := TIniFile.Create (LngFile); // 打开语种初始化文件
try
INIF.ReadSectionValues (Form.Name, SL); // 读取相应窗体信息
finally
INIF.Free;
end;
TmpSL := TStringList.Create;
try
for I := to SL.Count - do // 分隔每一行信息
begin
Split (SL.Strings[I], '=', TmpSL);
Key := Trim (TmpSL.Strings[]);
CompName := Trim (Copy(Key, , Pos ('.', Key) - ));
if CompName = '' then // 确定组件
AComponent := Form
else
AComponent := Form.FindComponent (CompName);
CompProp := Trim (Copy (Key, Pos ('.', Key) , Length (Key)));
Value := Trim (TmpSL.Strings[]);
SetPropertyValue (AComponent, CompProp, Value); // 设置属性
end;
finally
TmpSL.Free;
end;
finally
SL.Free;
end;
end;
3、在Form显示的事件中添加代码,将目录下所有的语言文件名加入菜单项:
procedure TForm1.FormShow(Sender: TObject);
var
lngStrings, tmpStrings: TStrings;
I: Integer;
lngMenu: TMenuItem;
Filename: string;
IniF: TIniFile;
begin
lngStrings := TString.Create;
try
SearchLanguagePack (lngStrings); // 查找语种文件
if lngStrings.Count = then // 没有找到语种文件直接退出
exit;
Filename := ExtractFilePath (ParamStr ()) 'Language\' lngStrings.Strings[] '.ini';
IniF := TIniFile.Create (Filename);
Filename := IniF.ReadString('Language', ' DefaultLang ', '');// 设置为默认语种
if Filename <> '' then
begin
Filename := ExtractFilePath (ParamStr ()) 'Language\' Filename '.ini';
if FileExists (Filename) then
begin
IniF.Free;
IniF := TIniFile.Create (Filename);
end;
end;
lngMenu := TMenuItem.Create (self);
lngMenu.Name := 'Language';
lngMenu.Caption := IniF.ReadString('Language', 'Language', 'Language');
MainMenu1.Items[MainMenu1.Items. Count].Add (lngMenu); // 语种菜单放到主菜单的最后
tmpStrings := TString.Create;
try
for I := to lngStrings.Count – do // 动态创建菜单项
begin
lngMenu := TMenuItem.Create (self);
lngMenu.Name := lngStrings.Strings[I]; // 将菜单项的名称赋予文件名
lngMenu.Caption := IniF.ReadString('Language', lngStrings.Strings[I], lngStrings.Strings[I]');
lngMenu.onClick := lngMenuClick; // 菜单事件
Language.Insert (Language.Items.Count, lngMenu); // 添加到语种菜单的最后一项上
end;
finally
tmpStrings.Free;
end;
finally
lngStrings.Free;
end;
ChangeLanguage (Form1, IniF); // 改变界面语种
IniF.Free;
end;
4、窗体中语种菜单的事件响应:
procedure TForm1.lngMenuClick (Sender: TObject); var Filename: string; begin if Sender is TMenuItem then begin // 确定语种文件,菜单项名称为语种文件名 Filename := ExtractFilePath (ParamStr ()) 'Language\' (Sender as TMenuItem).Name '.ini'; ChangeLanguage (Form1, Filename); end; end;
五、结束语
通过本次学习,让读者初步了解Delphi编程中运行时类型信息的应用技巧,同时掌握如何在程序运行时动态创建菜单。
delphi INI文件的更多相关文章
- Delphi INI 文件读写
delphi中,配置文件的相关操作. () INI文件的结构: ;这是关于INI文件的注释部分 [节点] 关键字=值 ... INI文件允许有多个节点,每个节点又允许有多个关键字, “=”后面是该关键 ...
- Delphi ini文件读写
参考:http://www.cnblogs.com/zhangzhifeng/archive/2011/12/01/2270267.html 一.ini文件的结构 ;这是关于 ini 文件的注释 [节 ...
- Delphi INI文件保存与读取
//需要引用IniFiles uses system.IniFiles; //保存INI配置文件 procedure TForm1.btnSaveClick(Sender: TObject); var ...
- 【经验】Delphi INI文件保存与读取
//需要引用IniFiles uses system.IniFiles; //保存INI配置文件 procedure TForm1.btnSaveClick(Sender: TObject); var ...
- Delphi ini文件操作 TIniFile、TMemIniFile
1.使用TIniFile unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co ...
- Delphi对ini文件的操作
一.INI文件的结构:; 注释[小节名]关键字=值 INI文件允许有多个小节,每个小节又允许有多个关键字, “=”后面是该关键字的值. 值的类型有三种:字符串.整型数值和布尔值.其中字符串存贮在INI ...
- Delphi 实现Ini文件参数与TEdit和TCheckBox绑定(TSimpleParam)
在实际工作中,常遇到对Ini参数的修改,显示与保存问题. 如果手工写代码,会有很大的工作量. 本例把ini文件的参数与控件绑定起来,以达到方便使用的目的. 本例程共有2个单元 uSimpleParam ...
- Delphi操作Ini文件
Delphi提供了一个TInifile类,使我们可以非常灵活的处理INI文件 一.INI文件的结构[小节名]ini文件 关键字1=值1 关键子2=值2INI文件允许有多个小节, ...
- delphi读取ini文件
ini文件在系统配置及应用程序参数保存与设置方面,具有很重要的作用,所以可视化的编程一族,如vb.vc.vfp.delphi等都提供了读写ini文件的方法,其中delphi中操作ini文件,最为简洁, ...
随机推荐
- linux基础(六)
今天我们来看一下Samba服务和nginx服务. Samba服务 1.samba的功能 samba是一个网络服务器,用于Linux和Windows之间共享文件. 2.samba服务的启动.停止.重启 ...
- hdu 1757 A Simple Math Problem (矩阵快速幂)
Description Lele now is thinking about a simple function f(x). If x < 10 f(x) = x. If x >= 10 ...
- [NOIP模拟测试30]题解
A.Return 出题人大概是怕自己的中文十级没人知道,所以写了这么一个***题面.可能又觉得这题太水怕全场A掉后自己面子过不去,于是又故意把输出格式说的含糊不清.(鬼知道"那么输出-1&q ...
- cooike和session到底是个啥
1.为什么需要cookie ? cookie不属于http协议范围,由于http协议无法保持状态,即无状态属性.但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. co ...
- php开发面试题---Apache 运行PHP原理(整理)
php开发面试题---Apache 运行PHP原理(整理) 一.总结 一句话总结: 不要忘记 php引擎将页面静态化 和 php引擎和apache之间通讯 反思的回顾非常有用,因为决定了我的方向和技巧 ...
- (18)C++ string和标准模板库
一.stringl类 1.string构造函数 string a1("abc");//初始化字符串 cout<<a1<<endl;//abc , '#'); ...
- SourceInsight 支持 Python
SourceInsight 支持 Python 步骤一:下载相关的插件 Python.CLF插件 链接如下: Python.CLF|Python.CLF下载_红软基地 http://www.rsdow ...
- AVL树,C语言实现,完整代码,先贴上,讲解稍后
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> #de ...
- Django框架(二十七)—— ContentType组件
目录 ContentType组件 一.什么是ContentType组件 二.使用ContentType 三.使用场景总结 ContentType组件 一.什么是ContentType组件 conten ...
- 在doker上的python安装及环境部署
python环境部署 我们今天学习的内容是如何将Django项目部署到linux服务器上,我们部署的linux系统是centos7首先,我们先在linux上搭建我们的Python3环境: 在这里首先强 ...