线程使用TClientSocket获取FTP目录列表为何无换行符?(100分)

  • 主题发起人 主题发起人 skadon
  • 开始时间 开始时间
S

skadon

Unregistered / Unconfirmed
GUEST, unregistred user!
线程中:
procedure FTPSocketThread.CSocketRead2(Sender: TObject;
Socket: TCustomWinSocket);
begin
if Socket.Data <> nil then

try TStrings(Socket.Data^).Add(Socket.ReceiveText);
except end;
end;

之前已经
Ts:=TStringList.Create;
CSocket2.Socket.Data :=@Ts;
获取列表结束后Ts中有数据,但是不分行,返回多个目录或文件时无法使用Ts获得每行,仅有一行,是全部的列表,如果使用pos(#13#10,Ts.Text)处理,能提取部分,仍有混合。同样代码在主程序中执行正常。
 
发现是TStringList的问题,改用TMemo可行。请教各位有关TStringList的说明。
 
TStringList是string的列表,每次add增加一个项(是“项”不是“行”),所以即使你的string中含有#13也会作为一项来处理。
而TMemo是可见控件,对字符处理时遇#13则分行,你读取时是按行读取的,故而可行。
 
后退
顶部