送分题:字符串的截取问题(50分)

  • 主题发起人 主题发起人 lqg
  • 开始时间 开始时间
L

lqg

Unregistered / Unconfirmed
GUEST, unregistred user!
如今有一个String str='c:/mm/tt/yy';我想得到其中的一个部分 'c:/mm/tt/'或
'c:/mm/tt'。该怎么办呢?
 
extractfilepath(str)
 
如果是一固定的string那就用
copy(str,1,9)不就好了嗎?
如果說是這一類的問題的話
用pos得出最後一個'/'的位置
再用copy即可
 
如果str就是一个目录名,那么可以用extractfilepath(str) (对应'c:/mm/tt/') 或者
extractfiledir(str) (对应'c:/mm/tt')。如果str没有规律,则可以采用newsweep的
方法。
 
如果你是针对文件名的,那么楼上的方法都是可行的
如果你是针对任意字符串,那么还是用copy(str,起始位置,截取长度)
 
同意newsweep
 
pos()加copy(0)不就ok!
 
同意楼上的同志的看法:用COPY是简单有效的方法。
 
copy(str,起始位置,截取长度)
 
字符串的长度是不定的。我提问题的目的主要是想取得某任意一个目录的上一级目录。
 
用的工具大家已经都告诉你了,就看你怎么去用了。。。
 
实现你的功能.两个函数,一个取反字符串,一个取路径,给分吧!
function StrReverse(str:string):string;
var i:integer;
begin
result:='';
for i:=Length(str) downto 1 do
begin
Result:=Result+Copy(str,i,1);
end;
end;

function GetString(sourceStr: string
iCount: integer): string;
var i,j,LastPos:integer;
ss:string;
begin
i:=0;
ss:=StrReverse(SourceStr);
while i<iCount do
begin
j:=pos('/',ss);
if j>0 then
begin
inc(i);
ss:=Copy(ss,j+1,length(ss)-j+1);
LastPos:=j;
end
else break;
end;
ss:=StrReverse(ss);
Result:=ss;
end;
 
用GetCurrentDirectory和SetCurrentDirectory不就可以了."目录/.."就是目录的上级
 
字符串的长度是不定的。我提问题的目的主要是想取得某任意一个目录的上一级目录。
用Pos()方法要定位出最后一个'/'的位置好像叶比较麻烦。要截取好多回。
 
function GetString(const sourceStr: string): string;
var i,j:integer;
ss:string;
begin
Result := '';
j:=0;
for i:= Length(sourceStr) downto 1 do
begin
ss:=Copy(sourceStr,i,1);
if ss='/' then
begin
j := i;
break;
end;
end;
if j>0 then
Result := Copy(sourceStr,1,j-1);
end

如果 sourceStr='c:/mm/tt/yy';
GetString(sourceStr)='c:/mm/tt'
 
看看这个:
procedure TForm1.Button2Click(Sender: TObject);
var
b:array[0..254] of char;
begin
GetCurrentDirectory(255,b);
caption:=b;
SetCurrentDirectory('../');
GetCurrentDirectory(255,b);
button2.Caption :=b;
end;
有函数不用,自己瞎折腾什么呀? 还是tseug 和我一样聪明 [:D]
 
用两个函数。无论什么目录都可以,最简单的方法
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2,str:string;
i:integer;
begin
str:='c:/yy/tt/yy';
s1:=strrscan(pchar(str),'/')

i:=length(str)-length(s1);
s2:=copy(str,1,i)
//s2:='c:/yy/tt';
//s2:=copy(str,1,i+1)
s2:='c:/yy/tt/'

end;
 
使用extractfilepath或extractfiledir
 
[blue][:)]兄弟,巧了,你叫LQG,我的名字的缩写为LGQ。呵呵~
[:)]
同意savenight,tseug
用GetCurrentDirectory和SetCurrentDirectory两个函数。
[/blue]
 
用decodedate函数,年、月、日分别定义成WORD型,再定义个日期型的变量, decodedate(变量,年,月,日)赋值就可以了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部