登陆
浏览模式: 标准 | 列表 分类: DELPHI

自己写的函数 结合正确的Url

Delphi代码
  1. Function ChuTrueUrl(Str1,Str2 :String) :String;   
  2. begin                         
  3.   Result :=Copy(Str1,1,LastDelimiter('/',Str1)-1)+'/'+Str2;   
  4. end;  

Tags: 获取url

Delphi 针对Net程序翻页

好东西呀 丢上来了以后我会再次用到就不用瞎翻了用Post提交数据

大鸟哥说ContentType很重要哩

Delphi代码
  1. Var   
  2.   Url :String;   
  3.   TAction :TStringStream;   
  4. begin  
  5.   Url :='XXXXXXXXXXXXX?Dis_Province=11';   
  6.   TAction :=TStringStream.Create('');   
  7.   IdAntiFreeze1.OnlyWhenIdle :=False;   
  8.   TAction.WriteString('__EVENTTARGET=DropDownList_Page&DropDownList_Page=3');   
  9.   IdHTTP1.Request.SetHeaders;   
  10.   IdHTTP1.Request.Referer :=Url;   
  11.   IdHTTP1.Request.ContentType :='application/x-www-form-urlencoded';   
  12.   ShowMessage(IdHTTP1.Post(Url,TAction));   
  13. end;  

Tags: net, 翻页, 采集

Delphi Ini文件创建失败已解决

http://www.jackfeng.com/show-702-1.html

如果你不能建立ini文件 是因为你建立了Create之后没有写入值 所以一个空文件是建立不出来的

所以你只要在建立之后加入写入键值即可

上次群里的一个朋友也遇到这个问题 没解决 我刚刚在弄的时候也碰到这个问题 才发现是没有键值

所以无法创建--_-##还以为是NTFS的关系呢呵呵 我的想法是多余的

Tags: ini, 创建

读取dll所有输出函数名

取得某一dll所有输出函数名
在uses里加上ImageHlp

Delphi代码
  1. procedure ListDLLFunctions(DLLName: String; List: TStrings);   
  2. type  
  3. chararr = array [0..$FFFFFFof Char;   
  4. var  
  5. H: THandle;   
  6. I,   
  7. fc: integer;   
  8. st: string;   
  9. arr: Pointer;   
  10. ImageDebugInformation: PImageDebugInformation;   
  11. begin  
  12. List.Clear;   
  13. DLLName := ExpandFileName(DLLName);   
  14. if FileExists(DLLName) then  
  15. begin  
  16. H := CreateFile(PChar(DLLName), GENERIC_READ, FILE_SHARE_READ or  
  17. FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);   
  18. if H<>INVALID_HANDLE_VALUE then  
  19. try  
  20. ImageDebugInformation := MapDebugInformation(H, PChar(DLLName), nil0);   
  21. if ImageDebugInformation<>nil then  
  22. try  
  23. arr := ImageDebugInformation^.ExportedNames;   
  24. fc := 0;   
  25. for I := 0 to ImageDebugInformation^.ExportedNamesSize - 1 do  
  26. if chararr(arr^)[I]=#0 then  
  27. begin  
  28. st := PChar(@chararr(arr^)[fc]);   
  29. if Length(st)>0 then  
  30. List.Add(st);   
  31. if (I>0and (chararr(arr^)[I-1]=#0then  
  32. Break;   
  33. fc := I + 1  
  34. end  
  35. finally  
  36. UnmapDebugInformation(ImageDebugInformation)   
  37. end  
  38. finally  
  39. CloseHandle(H)   
  40. end  
  41. end  
  42. end;   
  43.   
  44. procedure TForm1.Button1Click(Sender: TObject);   
  45. var  
  46. List: TStrings;   
  47. I: integer;   
  48. S: String;   
  49.   
  50. begin  
  51. List := TStringList.Create;   
  52.   
  53. ListDLLFunctions('c:windowssystemAbcsda.dll', List);   
  54. showmessage(inttostr(list.count));   
  55. S := 'List of functions';   
  56. for I := 0 to List.Count - 1 do  
  57. S := S + #13#10 + List[I];   
  58. ShowMessage(S);   
  59.   
  60. List.Free   
  61. end;     

Tags: 读取dll函数, 所有函数, 获取dll函数

Delphi截取技巧 LastDelimiter

Delphi代码
  1. str :=Copy(str,1,lastdelimiter('   ',str)-1)  

Tags: last, delimiter, 截取

快速查询PosEx与PosRightEx(转载)

快速查询posexposrightex

http://blog.csdn.net/senfore 

1.PosEx

功能说明:实现正向增强查询,跟FastCodePosEx功能相同,不依赖fastCode;

OffSet为偏移位置,通过测试,速度要比FastCodePosEx稍慢。

function PosEx(const SubStr,S:AnsiString;const Offset:Cardinal=1):Integer;
var
  iPos: Integer;
  i, j,LenS,LenSub: Integer;
  PCharS, PCharSub: PChar;
begin
  Result := 0;
  LenS:=Length(S);
  lenSub := length(Substr);
  if (LenS=0) Or (lenSub=0) then Exit;
  if (LenS-lenSub)<Offset then  Exit;

  PCharS := PChar(s);
  PCharSub := PChar(Substr);

  for I := Offset-1 to LenS-1 do
  begin
    if lens-I<LenSub then Exit;
    for j := 0 to lenSub - 1 do
    if PCharS[i + j] <> PCharSub[j] then
      break
    else if J=LenSub-1 then
    begin
      Result:=I+1;
      Exit;
    end;     
  end;
end;

2.PosRightEx

功能说明:实现反向增强查询;

OffSet为偏移位置,通过指定Offset,只查询Offset以前位置(包括Offset所在位置字符)。查询方法为从右向左最比。与PosEx效率相同。

function PosRightEx(const SubStr,S:AnsiString;const Offset:Cardinal=MaxInt):Integer;
var
  iPos: Integer;
  i, j,Len,LenS,LenSub: Integer;
  PCharS, PCharSub: PChar;
begin
  Result := 0;
  LenS:=Length(S);
  lenSub := length(Substr);
  if (LenS=0) Or (lenSub=0) then Exit;
  if Offset<LenSub then Exit;

  PCharS := PChar(s);
  PCharSub := PChar(Substr);

  Len:=Offset;
  if Len>LenS then
     Len:=LenS;

  for I := Len-1 downto 0 do
  begin
    if I<LenSub-1 then Exit;
    for j := lenSub - 1 downto 0 do
    if PCharS[i -lenSub+j+1] <> PCharSub[j] then
      break
    else if J=0 then
    begin
      Result:=I-lenSub+2;
      Exit;
    end;
  end;
end;

以上两个函数都是大小写敏感的,可以通过自己修改对比方法。

Tags: posex, posrightex, 函数, 查询

Delphi ListView用法

//增加项或列(字段)

listview1.Clear;
ListView1.Columns.Clear;
ListView1.Columns.Add;
ListView1.Columns.Add;
ListView1.Columns.Add;
ListView1.Columns.Items[0].Caption:='id';
ListView1.Columns.Items[1].Caption:='type';
ListView1.Columns.Items[2].Caption:='title';
ListView1.Columns.Items[2].Width:=300;
Listview1.ViewStyle:=vsreport;
Listview1.GridLines:=true;               //注:此处代码也可以直接在可视化编辑器中完成,

也可写成以下这样

begin
with listview1 do
begin
Columns.Add;
Columns.Add;
Columns.Add;
ViewStyle:=vsreport;
GridLines:=true;
columns.items[0].caption:='进程名';
columns.items[1].caption:='进程ID';
columns.items[2].caption:='进程文件路径';
Columns.Items[0].Width:=100;
Columns.Items[1].Width:=100;
Columns.Items[2].Width:=150;
end
end;

 

//增加记录
with listview1.items.add do
begin
caption:='1212';
subitems.add('hh1');
subitems.add('hh2');
end;

//删除
listview1.items.delete(0);

//从数据库表里读取数据写入Listview

var
Titem:Tlistitem;       //此处一定要预定义临时记录存储变量.
begin
ListView1.Items.Clear;
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select spmc,jg,sl from kcxs');
Open;
ListView1.Items.Clear;
while not eof do
begin
Titem:=ListView1.Items.add;
Titem.Caption:=FieldByName('spmc').Value;
Titem.SubItems.Add(FieldByName('sl').Value);
Titem.SubItems.Add(FieldByName('jg').Value);
next;
end;

//删除
ListView1.DeleteSelected;

//如何取得ListView中选中行的某一列的值

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(ListView1.Selected.SubItems.Strings[1]); //返回选中行第三列中的值
end;

showMessage(listView1.Selected.Caption);   //返回选中行第一列的值.

第1列的值: -->>> ListView1.Selected.Caption   
第i列的值(i>1):-->>> ListView1.Selected.SubItems.Strings[i]

返回选中行所有子列值.是以回车符分开的,你还要从中剥离出来你要的子列的值。

showMessage(ListView1.Selected.SubItems.GetText);   

Tags: listview, 用法

Delphi 获取内存信息

与获取CPU一样,系统依然采用了一个结构体来存储内存信息。这个存储内在状……

» 阅读全文

Tags: 获取内存, 内存信息, 内存

Delphi 获取CPU信息

CPU的相关信息是存储在一个结构体中的,这个结构体由DELPHI用TSYSTEMINFO进行了封装……

» 阅读全文

Tags: 获取cpu, cpu信息

Delphi 实现控制IIS

可不要忘记加Comobj哦 现在在研究控制iis相关的东西呢 给自己管理的服务器写个软件来玩

» 阅读全文

Tags: 控制iis, iis, 控制, 启动