问题一:
如何读写如下格式的配置文件
Homepage http://www.163.com
BBSURL http://bbs.csdn.net
NOTICE http://notice.xxx.xxx
跟INI差不多。。就是把‘=’号换成了空格或者TAB符。问题二:
请高手帮写一个HOOK 某服务器端的程序。。此服务端使用完成端口,可能也有多线程处理。 要求HOOK WSASend WSARecv 要求不要被杀软误报。。服务端程序没加壳。如能解决,感激涕零。。
如何读写如下格式的配置文件
Homepage http://www.163.com
BBSURL http://bbs.csdn.net
NOTICE http://notice.xxx.xxx
跟INI差不多。。就是把‘=’号换成了空格或者TAB符。问题二:
请高手帮写一个HOOK 某服务器端的程序。。此服务端使用完成端口,可能也有多线程处理。 要求HOOK WSASend WSARecv 要求不要被杀软误报。。服务端程序没加壳。如能解决,感激涕零。。
一个应该是比较低效率的解决方法
这个配置文件Assignfile到一个textfiel,然后用readln读整行,
用pos确定空格(或其他可以用#NN表示的字符)在整行字符串中的位置
再用相关字符串函数获取分割符两端的字符串,如copy等。
第二个 不会
begin
if Not FileExists(CfgPath) then
begin
showmessage('Can not found cfg file :'+#10#13+CfgPath) ;
speedbutton1.Visible :=false;
end
else begin
speedbutton1.Visible :=true;
AssignFile(CfgText, CfgPath);
reset(CfgText);
while not Eof(CfgText) do
begin
readln(CfgText, tmp);
tmp:=StringReplace(tmp,' ','',[rfReplaceAll]);
tmp:=StringReplace(tmp,#9,'',[rfReplaceAll]);
tmp:=UpperCase(tmp) ;
if pos('USCRREFRESHHZ',tmp ) >0 then
begin
freshcbox.Text :=stringreplace(tmp,'USCRREFRESHHZ','',[rfReplaceAll]);
end; if pos('DWSCRWIDTH',tmp)>0 then
begin
ScrW := stringreplace(tmp,'DWSCRWIDTH','',[rfReplaceAll]);
end; if pos('DWSCRHEIGHT',tmp)>0 then
begin
ScrH := stringreplace(tmp,'DWSCRHEIGHT','',[rfReplaceAll]);
end; if pos('EMSCRFORMAT',tmp)>0 then
begin
ScrC := stringreplace(tmp,'EMSCRFORMAT','',[rfReplaceAll]);
end;
if pos('BSCRWINDOWED',tmp)>0 then
begin
Win := stringreplace(tmp,'BSCRWINDOWED','',[rfReplaceAll]);
end; end;
CloseFile(CfgText);
if ScrC = '0' then
begin
ScrC :='16';
end
else
begin
ScrC :='32';
end;
checkbox.Checked :=SameText(Win,'1');
combobox.Text :=ScrW+'*'+ScrH+'*'+ScrC
end;
end ;