2015-01-14 19 views
-2

如何從兩個不同的位置僅通過一個TCP-服務器發送文件,我設法從只有一個位置發送文件。 此代碼從一個目錄發送...如何使用一臺TCP-Server從兩個不同位置發送文件?

procedure TForm1.Timer1Timer(Sender: TObject); 
var 
    fs: TFileStream; 
    fn: string; 
    sr: TSearchRec; 
    I: integer; 
begin 
    I := 0; 
    if FindFirst('C:/*.jpg', faAnyFile, sr) = 0 then 
    begin 
    with StringGrid1 do 
    begin 
     ListBox1.Items.Add('C:/' + sr.Name); 
     while FindNext(sr) = 0 do 
     begin 
     ListBox1.Items.Add('C:/' + sr.Name); 
     Inc(I); 
     if I = 7 then 
      Break; 
     end; 
     FindClose(sr); 
     idTCPClient1.Connect; 
     for fn in ListBox1.Items do 
     begin 
     fs := TFileStream.Create(fn, fmOpenRead or fmShareDenyWrite); 
     try 
      idTCPClient1.IOHandler.WriteLn(ExtractFileName(fn)); 
      idTCPClient1.IOHandler.Write(fs, 0, True); 
      idUDPClient1.Send(lbLatitude.Text + ',' + lbLongitude.Text); 
     Finally 
      fs.Free; 
     end; 
     end; 
    end; 
    end; 
end; 
+0

我不知道你在問什麼。您發佈的代碼有哪些具體問題? –

+0

從1個目錄發送文件的代碼,我需要它從兩個不同的目錄發送文件? –

+0

您正在發送基於您放入列表框中的8個項目的文件。如果這8個文件在同一個目錄中,那麼你只是故意從一個目錄發送文件。如果您希望它不同,請將項目放入不同目錄中的列表框中。你的代碼是將文件名放入列表框中,而你只是發送這些文件。 –

回答

0

所有你需要做的(不完全重新編寫代碼,像DavidH建議)僅僅是從所有不同目錄的填充路徑的列表框你想,例如:

procedure TForm1.Timer1Timer(Sender: TObject); 
var 
    fs: TFileStream; 
    fn: string; 
    sr: TSearchRec; 
    I : integer; 
begin 
    I := 0; 
    if FindFirst('C:/*.jpg', faAnyFile, sr) = 0 then 
    begin 
    repeat 
     ListBox1.Items.Add('C:/' + sr.Name); 
     Inc(I); 
     if I = 7 then Break; 
    until FindNext(sr) <> 0; 
    FindClose(sr); 
    end; 

    if I < 7 then 
    begin 
    if FindFirst('C:/Some Other Folder/*.jpg', faAnyFile, sr) = 0 then 
    begin 
     repeat 
     ListBox1.Items.Add('C:/Some Other Folder/' + sr.Name); 
     Inc(I); 
     if I = 7 then Break; 
     until FindNext(sr) <> 0; 
     FindClose(sr); 
    end; 
    end; 

    idTCPClient1.Connect; 
    for fn in ListBox1.Items do 
    begin 
    fs := TFileStream.Create(fn, fmOpenRead or fmShareDenyWrite); 
    try 
     IdTCPClient1.IOHandler.WriteLn(ExtractFileName(fn)); 
     IdTCPClient1.IOHandler.Write(fs, 0, True); 
     ... 
    finally 
     fs.Free; 
    end; 
    end; 
end; 
相關問題