Copy(fn, 1, Length(fn) - Length(ExtractFileExt(fn)))fn是文件名。

解决方案 »

  1.   

    1。ExtractFileName(String):string;//获得文件名;
       ExtractFileExt(string):string;//获得扩展名;
    2。 filename:=ExtractFileName(Filename:string):string;
        positon:=pos('.',filename);
        newfilename:=Delete(filename,position,length(filename)-position);
      

  2.   

    简单截取吧
    wholeName:123.txt
     
    filename:=copy(wholeName,1,length(wholeName)-4);filename:123
      

  3.   

    更正:
    newfilename:=Delete(filename,position,length(filename)-position);
    应为:
    Delete(filename,position,length(filename)-position);
    Delete 是一个过程
      

  4.   

    哎,你们有没有考虑到有多个.的情况?(例如一个这样的文件名:aaa.bbb.ccc.ddd)Windows的长文件名系统允许多个.!应该用下面的语句:
    result:=copy(ExtractFilename(filename),1,pos(Extractfileext(filename),Extractfilename(filename))-1);
      

  5.   

    有更简单的:
      result:=changefileext(Extractfilename(filename),'');
    如果带路径的话还方便一点儿:
      result:=changefileext(filename,'');
      

  6.   

    和meijg说的一样,就是着样的了“”“”
    1。ExtractFileName(String):string;
       ExtractFileExt(string):string;
    2。 filename:=ExtractFileName(Filename:string):string;
        positon:=pos('.',filename);
        newfilename:=Delete(filename,position,length(filename)-position); 
     
      

  7.   

    我猜你是想要得到当前执行文件的文件名
    str1 := Application.ExeName; //获得当前执行文件的文件名
    ExtractFileName(Str1);//获得当前执行文件的文件名;
    ExtractFilePath(str1);//获得当前执行文件的路径
      

  8.   

    不好意思,刚才只看了你的问题主题;   我用打开对话框举例说明
    if OpenDialog1.ExeCute then
    begin
      str1 := ExtractFileName(OpenDialog1.Filename);
      n    := pos('.',str1)
      str2 := copy(Str1,1,n-1)//这便是你想要的!
    end;
      

  9.   

    不好意思,刚才只看了你的问题主题;   我用打开对话框举例说明
    if OpenDialog1.ExeCute then
    begin
      str1 := ExtractFileName(OpenDialog1.Filename);
      n    := pos('.',str1)
      str2 := copy(Str1,1,n-1)//这便是你想要的!
    end;
      

  10.   


    function TForm1.GetMaskString(S,Mask:string;Position:integer):string;
    var Str:string;
        i,Len:integer;
    begin
      Str:='';
      for i:=0 to Position -1 do
      begin
        if (Pos(Mask,S)<=0) then //最后
        begin
          Str:=S;
          Break;
        end;
        Str:=Copy(S,1,Pos(Mask,S)-1);
        Len:=Length(Str);
        S:=Copy(S,Len+2,Length(S)-Len-1);
      end;
      Result:=Str;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var str:string;
    begin
      if opendialog1.execute then
      begin
        //过滤文件名称。
        str:=getmaskstring(str,'\',100);
        //过滤所要的文件名称。
        str:=getmaskstring(str,'.',1);
        showmessage(str);
      end;
    end;
      

  11.   

    Kingron的方法是最直截了当的.一边看到这个问题的时候,我就一边在想,那个函数是啥来着?
    不过看到Kingron的回答我就失望了----没我啥事了!
      

  12.   

    ExtractFileName(Filename:string):String
      

  13.   

    如果你已经获得了文件的全路径(包括文件名称和后缀),那么很容易可以获得文件名的:
       
       Var
        FileNameStr:String;
        FilePathName: PChar;   //全路径;
        iK,jK:integer;
    begin
        iK:= 0;
        jK:= 0;
        FilePathName:= '\C:\temp\123.txt';
        FileNameStr:= '';
        for iK:= length(FilePathName) downto 1 do
        begin
          if FilePathName[iK]<>'.' then Continue
          else
          begin
             jK:= iK-1;
             Break;
          end;
        end;
        for iK:= jK downto 1 do
        begin
          if FilePathName[iK]<>'\' then FileNameStr:= FilePathName[iK]+FileNameStr
          else Break;
        end;
        Showmessage(FileNameStr);
      

  14.   

    如果你已经获得了文件的全路径(包括文件名称和后缀),那么很容易可以获得文件名的:
       
       Var
        FileNameStr:String;
        FilePathName: PChar;   //全路径;
        iK,jK:integer;
    begin
        iK:= 0;
        jK:= 0;
        FilePathName:= '\C:\temp\123.txt';
        FileNameStr:= '';
        for iK:= length(FilePathName) downto 1 do
        begin
          if FilePathName[iK]<>'.' then Continue
          else
          begin
             jK:= iK-1;
             Break;
          end;
        end;
        for iK:= jK downto 1 do
        begin
          if FilePathName[iK]<>'\' then FileNameStr:= FilePathName[iK]+FileNameStr
          else Break;
        end;
        Showmessage(FileNameStr);
      

  15.   

    奇怪,为什么这样麻烦的解决问题,答案很简单呀!
    kingron方法就行。奇怪?为什么?
    看看ChangeFileExt();函数,他返回便完后缀的文件名。
     var
      xName: string;
    begin
      XName := ChangeFileExt(xName, '');
      Showmessage(xName);
    end;
      

  16.   

    Delete(vFileName, pos('.', vFileName) , Length(vFileName));
      

  17.   

    我还是比较赞同Kingron的解决办法!
    这么多办法:我想edwardrao应该已经解决问题了吧!???