拆分字符串,GetHtmlByWebBrowser,UnicodeToMBCS,提升进程权限
1、
- // 根据字符串,拆分字符串,相当于vb中的split函数
- function SplitString(const Source, ch: string): TStringList;
- var
- temp: String;
- i: Integer;
- begin
- Result := TStringList.Create;
- // 如果是空自符串则返回空列表
- if Source = '' then
- exit;
- temp := Source;
- i := pos(ch, Source);
- while i <> 0 do
- begin
- Result.add(copy(temp, 0, i - 1));
- Delete(temp, 1, i + length(ch) - 1);
- i := pos(ch, temp);
- end;
- Result.add(temp);
- end;
- function isSupportFileTypes(ext: string;iniFilePath:string): Boolean;
- var
- supportFileTypes: TStringList;
- i: Integer;
- myini:TIniFile;
- config:string;
- begin
- Result := False;
- //iniFilePath要绝对路径
- myini:=TIniFile.Create(iniFilePath);
- supportFileTypes := TStringList.Create;
- config:=myini.ReadString('supportExtractFileType','config','');
- supportFileTypes:=SplitString(config,'|');
- // zip apk rar dll exe等不支持抽取文本信息
- for i := 0 to supportFileTypes.Count - 1 do
- begin
- if Trim(supportFileTypes[i]) = LowerCase(ext) then
- begin
- Result := True;
- //ShowMessage('true');
- Break;
- end;
- end;
- supportFileTypes.Free;
- myini.Free;
- end;
2、
- function TFrmMain.GetHtmlByWebBrowser(const WebBrowser: TWebBrowser;
- URL: string): string;
- var
- ms: TMemoryStream;
- MyStrList: TStringList;
- begin
- Try
- WebBrowser.Navigate(URL);
- Except
- End;
- while WebBrowser.ReadyState <> READYSTATE_COMPLETE do
- Application.ProcessMessages;
- While not Assigned(WebBrowser.Document) do
- Application.ProcessMessages;
- ms := TMemoryStream.Create;
- MyStrList := TStringList.Create;
- (WebBrowser2.Document as IPersistStreamInit)
- .Save(TStreamAdapter.Create(ms), True);
- ms.Position := 0;
- MyStrList.LoadFromStream(ms, TEncoding.UTF8);
- Result := MyStrList.Text;
- end;
3、
- function UnicodeToMBCS( // 将Unicode编码字符串转换成多字节字符串
- mCodePage: UINT; // 对照表页码
- mUnicode: WideString // Unicode编码字符串
- ): string; // 返回处理后的字符串
- var
- L: Integer;
- begin
- L := WideCharToMultiByte(mCodePage, 0, PWideChar(mUnicode), -1, nil, 0, nil,
- nil);
- SetLength(Result, L);
- if L <= 0 then
- Exit;
- WideCharToMultiByte(mCodePage, 0, PWideChar(mUnicode), -1, @Result[1], L,
- nil, nil);
- end;
- function MBCSToUnicode( // 将多字节字符串转换成Unicode编码字符串
- mCodePage: UINT; // 对照表页码
- mMBCS: string // 多字节字符串
- ): WideString; // 返回处理后的字符串
- var
- L: Integer;
- begin
- L := MultiByteToWideChar(mCodePage, 0, PAnsiChar(mMBCS), -1, nil, 0);
- SetLength(Result, L);
- if L <= 0 then
- Exit;
- MultiByteToWideChar(mCodePage, 0, PAnsiChar(mMBCS), -1, @Result[1], L);
- end;
- procedure TForm3.Button1Click(Sender: TObject);
- var
- str,str2:string;
- begin
- str:=UnicodeToMBCS(CP_UTF8,'你好你是猪test');
- ShowMessage(str);
- str2:=MBCSToUnicode(CP_UTF8,str);
- ShowMessage(str2);
- end;
4、提升进程权限:
- procedure TForm1.GetPrivilege;
- var
- NewState: TTokenPrivileges;
- lpLuid: Int64;
- ReturnLength: DWord;
- ToKenHandle: Cardinal;
- begin
- OpenProcessToken(GetCurrentProcess,
- TOKEN_ADJUST_PRIVILEGES
- OR TOKEN_ALL_ACCESS
- OR STANDARD_RIGHTS_REQUIRED
- OR TOKEN_QUERY,ToKenHandle);
- LookupPrivilegeValue(nil,'SeShutdownPrivilege',lpLuid);
- NewState.PrivilegeCount:=1;
- NewState.Privileges[0].Luid:=lpLuid;
- NewState.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
- ReturnLength:=0;
- AdjustTokenPrivileges(ToKenHandle,False,NewState,0,nil,ReturnLength);
- end;
5 、stringbuilder
- procedure TForm2.Button1Click(Sender: TObject);
- var
- sb: TStringBuilder;
- begin
- sb := TStringBuilder.Create;
- sb.Append('test');
- sb.AppendLine;//换行
- sb.AppendFormat('%s %d', ['Delphi', 2009]);
- sb.AppendLine;//换行
- sb.AppendLine('[2015-05-04 09:00:03||android0033333][2015-05-04 08:55:28||android003][2015-05-04 08:54:33||android002][2015-05-04 08:53:50||android01][2015-05-04 08:38:02||android]');
- // sb.AppendLine('[2015-6-2 09:19:41||test][2015-6-2 09:21:12||fuck]');
- sb.Replace('[', '');
- sb.Replace(']', '');
- ShowMessage(sb.ToString);
- sb.Free;
- end;
6、delphi 字符串操作函数
查找位置函数
[调用格式]:pos(s1,s2);Integer;
[功能]:返回字符串s1在字符串s2中首次出现的位置,若s2中不存在s1,则返回0。
[说明]: 若s1在s2当中,则必须满足s1的所有字符都在s2中,即s1是s2哦子串。
[例如]: x:=pos('bx','adcd'); //x的值为2
合并字符串过程
[调用格式]
Appendstr(var l;const s2);
[功能]:相同于执行s1:='s1+s2';
[说明]:本过程比语句"s1:=s1+s2";执行效率高
截取子字符串函数
[调用格式]: Copy(str, m, n): String;
[功能]:在字符串str 中截取从第 m 个字符开始长度为n 的子字符串,并作为函数的返回值。
[说明]:若m大于s 的长度,则返回一个空串;若从第m 个字符到s 的结尾不足n 个字符,则返回其间的所有字符。
[例如]:
Source code ( By http://www.fishc.com )
s1:= Copy( ‘IloveFishc!', 6, 5 ); // s1 的值为‘Fishc'
s2:= Copy( ‘小甲鱼爱美眉!’, 4, 5 ); // s2 的值?
s3:= Copy( ‘IloveFishc!’, 1, 1 );
s4:= Copy( ‘IloveFishc!’, 0, 1);
注意:s3 和 s4 其实是一样的!
删除子字符串过程
[调用格式]:Delete( str, m, n );
[功能]:在字符串str 中删除从第m个字符开始长度为n的子字符串。
[说明]:
如果m大于str 的长度,则不删除任何字符;
如果从第m 个字符开始到str 的末尾不足n个字符,则删除其间的所有字符;
如果n小于等于0,则不删除任何字符。
插入子字符串过程
[调用格式]:Insert( str1, str, k );
[功能]:将字符串str1插入到字符串str 中的第k个字符处。
function UpperCase(const S: string): string; //转大写
function LowerCase(const S: string): string; //转小写
StringReplace
SetLength
CopyMemory
GetMem
Move
http://blog.csdn.net/earbao/article/details/12883857
拆分字符串,GetHtmlByWebBrowser,UnicodeToMBCS,提升进程权限的更多相关文章
- Windows下提升进程权限
windows的每个用户登录系统后,系统会产生一个访问令牌(access token) ,其中关联了当前用户的权限信息,用户登录后创建的每一个进程都含有用户access token的拷贝,当进程试图执 ...
- 解决windows10 里vs2015 附件进程调试提示“此任务要求应用程序有提升的权限”
刚用windows10 ,感觉有些地方别扭.就在是vs2015开发程序的时候,就遇到了个问题. 首先 我是使用adminitrator账号登陆的. 双击vs解决方案,打开iis,然后结合vs2015里 ...
- Win10 通过附加进程调试时出现“此任务要求应用程序具有提升的权限”
最近有新人在使用vs调试时出现了“此任务要求应用程序具有提升的权限”的提示,每次调试vs就会重启一次. 问到我时,我经过查了一番资料才给解决掉了. 其实,问题主要是因为直接启动vs项目时没有足够的权限 ...
- .NET中提升UAC权限的方法总结
[题外话] 从Vista开始,由于增加了UAC(用户账户控制,User Account Control)功能,使得管理员用户平时不再拥有能控制所有功能的管理员权限了,所以在调用很多比较重要的功能时需要 ...
- win8 64位操作系统 Microsoft Visual Studio 2010在IIS上调试 “此任务要求应用程序具有提升的权限”等问题
很少在IIS上调试程序,因系统原因,所以不得不在IIS上预览项目和调试项目(因为只能在IIS上预览项目才能看到项目里的数据). 1.附加到进程(注意附加到进程前必须预览项目) 2.选择调试项 需要注意 ...
- R语言拆分字符串
R语言拆分字符串 aaa<-"aa;bb;cc"ccc<-strsplit(aaa,split=";") bbb<- unlist(strsp ...
- 【SQL】sql版Split函数。用于拆分字符串为单列表格
功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移除空格子串和重复项.市面上类似的函数不算少,但大多都是在循环 ...
- oracle11g 拆分字符串的详细技巧
转自:http://m.blog.csdn.net/article/details?id=51946573 <-->功能需求 有一个比较长的SQL语句,查询 ...
- linux下进程权限分析
转自http://blog.chinaunix.net/uid-27105712-id-3349522.html 在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知 ...
随机推荐
- 关于android中postDelayed方法的讲解
这是一种可以创建多线程消息的函数使用方法:1,首先创建一个Handler对象 Handler handler=new Handler(); 2,然后创建一个Runnable对象Runnable run ...
- Android TextView自己主动换行文字排版參差不齐的原因
今天项目没什么进展,公司后台出问题了.看了下刚刚学习Android时的笔记,发现TextView会自己主动换行,并且排版文字參差不齐.查了下资料,总结原因例如以下: 1.半角字符与全角字符混乱所致:这 ...
- Eclipse用法和技巧二十:一个快速打印技巧
调试的时候经常用到打印语句,当需要添加的说明字符串和需要打印的数值混淆到一起的时候,需要先写字符串如,"the string here is",接着再输入变量的值.这样一来一去还是 ...
- log4net结构
log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.其大致分为如下这些模块. Appenders模 ...
- Python,PIL压缩裁剪图片
自己写了用来压缩 DC 照片的,批量处理整目录文件,非常方便.需要安装 PIL #!/usr/bin/env python import Image import os import os.path ...
- 增强SEO的div+css命名规则
页头:header登录条:loginBar标志:logo侧栏:sideBar广告:banner导航:nav子导航:subNav菜单:menu子菜单:subMenu搜索:search滚动:scroll页 ...
- linux内核系统调用--sendfile函数
在apache,nginx,lighttpd等webserver其中,都有一项sendfile相关的配置,在一些网上的资料都有谈到sendfile会提升文件传输性能,那sendfile究竟是什么呢?它 ...
- uva 10951 - Polynomial GCD(欧几里得)
题目链接:uva 10951 - Polynomial GCD 题目大意:给出n和两个多项式,求两个多项式在全部操作均模n的情况下最大公约数是多少. 解题思路:欧几里得算法,就是为多项式这个数据类型重 ...
- 解决SVG跨浏览器兼容性问题
Raphael JS:SVG/VML+JS实现跨浏览器的矢量图形实现方案 http://blog.csdn.net/tiewen/article/details/8535748 SVG那些小事儿 ht ...
- 【Unity 3D】学习笔记三十九:控制组件
控制组件 角色控制组件和刚体组件都具备物理引擎的功能,须要绑定游戏对象才干实现对应的物理效果,而且同一个游戏对象中两者仅仅能存在一个,不能共存.刚体组件能够很精确的模拟现实世界中的一切物理效果,而角色 ...