procedure TForm1.Button1Click(Sender: TObject);
var
  fsRecv : TFileStream;
begin
SaveDialog1.Execute;
fsRecv:=TFileStream.Create(SaveDialog1.FileName,fmCreate);
end;建立成功。

解决方案 »

  1.   

    提示:
    cannot create file c:\..\1.txt
      

  2.   

    if SaveDialog1.Execute then
                begin
                     Socket.SendText(MP_ACCEPT);
    fsRecv:=TFileStream.Create(SaveDialog1.FileName,fmCreate);
                         MessageBox( Handle, '建立后。', '提示信息',
          MB_OK + MB_ICONEXCLAMATION + MB_DEFBUTTON1 );
      

  3.   

    我是用socket编了一个文件传输程序服务器启动后客户端连接后发送文件可服务器按了保存后
    提示不能建立文件
      

  4.   

    : dongxsoft(浮云化雨) ( 
    没有此文件阿
      

  5.   

    fmCreate 改成 fmCreate or fmShareExclusive
      

  6.   

    客户端procedure TForm1.Button1Click(Sender: TObject);
    begin
         cs.Address:=edit1.Text;
         cs.Port:=2000;
         cs.Active:=true;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
         if OpenDialog1.Execute then
         Begin
           cs.Socket.SendText(MP_QUERY+OpenDialog1.FileName);//FileSize???
         end; end;procedure TForm1.csRead(Sender: TObject; Socket: TCustomWinSocket);
    var
        sTemp,srecv,MP_FILEPROPERTY:string;
        bufSend:pointer;
        fssend:tfilestream;
        iBYTEPERSEND:integer;
    begin
        mp_fileproperty:= '发送开始:';
        iBYTEPERSEND:=2048;
        sRecv:=Socket.ReceiveText;
        Case sRecv[1] of
        MP_REFUSE:
        ShowMessage('Faint,be refused!');
        MP_ACCEPT:
        begin
             fsSend:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
             //iBYTEPERSEND是个常量,每次发送包的大小。         Socket.SendText(MP_FILEPROPERTY+inttostr(Trunc(fsSend.Size/iBYTEPERSEND)+1));
        end;
        MP_NEXTWILLBEDATA:
        begin
             Socket.SendText(MP_NEXTWILLBEDATA);
        end;
        MP_DATA:
        begin
            try
                 GetMem(bufSend,iBYTEPERSEND+1);
                 if (fsSend.Position+1+iBYTEPERSEND) < fsSend.Size then
                 begin
                      fsSend.Read(bufSend^,iBYTEPERSEND);
                      Socket.SendBuf(bufSend^,iBYTEPERSEND);
                      fsSend.Free;
                 end//普通的发送,大小为iBYTEPERSEND
                 else
                 begin
                      fsSend.Read(bufSend^,fsSend.Size-fsSend.Position-1);
                      Socket.SendBuf(bufSend^,fsSend.Size-fsSend.Position-1);
                 end;//最后一次发送,发送剩余的数据
           finally
                 FreeMem(bufSend,iBYTEPERSEND+1);
           end;{of try}
        end;
        MP_ABORT:
        begin
          //被取消了:(
           fsSend.Free;
        end;
     end;{of case}
    //用Delphi编写点对点传文件程序(2)
    end;
    服务器端:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        ss.Port:=2000;
        ss.Open;
    end;procedure TForm1.ssClientRead(Sender: TObject; Socket: TCustomWinSocket);
    var
    stemp:string;
    bufrecv:pointer;
    irecvlength:integer;
    fsrecv:tfilestream;begin
       breadtext:=true;
       if breadtext then
    //   if 1=1 then
       begin
          sTemp:=Socket.ReceiveText;
          case sTemp[1] of
          MP_QUERY:
          begin
                //在这里拒绝
                SaveDialog1.FileName:=Copy(sTemp,2,Length(STemp)-1);
                if SaveDialog1.Execute then
                begin
                     Socket.SendText(MP_ACCEPT);
                         MessageBox( Handle, '建立前。', '提示信息',
          MB_OK + MB_ICONEXCLAMATION + MB_DEFBUTTON1 );
               
                     fsRecv:=TFileStream.Create(SaveDialog1.FileName,fmCreate);
                         MessageBox( Handle, '建立后。', '提示信息',
          MB_OK + MB_ICONEXCLAMATION + MB_DEFBUTTON1 );
                end
                else
                     Socket.SendText(MP_REFUSE+'去死');
          end;
     //     MP_FILEPROPERTY:
     //     begin
               //要发送StrToInt(Copy(sTemp,2,Length(sTemp))) 次
               //时间进度显示
     //          Socket.SendText(MP_NEXTWILLBEDATA);
     //     end;
          MP_NEXTWILLBEDATA:
          begin
               Socket.SendText(MP_DATA);
               bReadText:=false;
          end;
     //     MP_END:
     //     begin
     //          fsRecv.Free
     //          bReadText:=true;
     //     end;
          MP_ABORT:
          begin
               fsRecv.Free;
               bReadText:=true;
          end;
          MP_CHAT:
          begin
               //Chat Msg
          end;
        end;{of case}
      end
      else
      begin
           try
              GetMem(bufRecv,2000);//2000 must >iBYTESEND
              Socket.ReceiveBuf(bufRecv^,iRecvLength);
              fsRecv.WriteBuffer(bufRecv^,iRecvLength);
           finally
              FreeMem(bufRecv,2000);
           end;{of try}
           bReadText:=true;
           Socket.SendText(MP_NEXTWILLBEDATA);
      end;end;
      

  7.   

    我们调试是没有问题的.
    你也可以采用以下方法,从FileStream中读出串来自己写入文件中,通过文件IO来实现.
      

  8.   

    怎么设置权限
    我的服务端在windows2000server
    客户端在win98程序里怎么设置权限
      

  9.   

    你先在你要保存的目录下建立1.txt文件,再把
    fsRecv:=TFileStream.Create(SaveDialog1.FileName,fmOpenRead);
    就是改成只读的形式,如果可以的话,哪就是权限的问题了,