![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() В общем сделал программу для того чтоб передавать несколько файлов через сокет.
Работает, но передает только первый файл (картинку), клиент сохраняет ее но второй файл, который после цикла создается, но пустым. Если удаляю процедуру создания первого файла то второй файл записывается нормально, чувствую что ошибся в какой-то мелочи но понять не могу в какой??? Вот код сервера: Код:
if sCommand = 'NAME' then begin pic:=MakeTest(sAction,sTip); ss:=pic; w:=0; for q:=1 to length(ss) do if copy(ss,q,1)=',' then w:=w+1; AThread.Connection.WriteLn(inttostr(w)); for q:=1 to w do begin s:=copy(ss,pos(',',ss)+1,1000); if pos(',',s)>0 then begin s:=copy(ss,1,pos(',',ss)-1); ss:=copy(ss,pos(',',ss),1000); end ; AThread.Connection.WriteLn(s); fStream := TFileStream.Create(s,fmOpenRead + fmShareDenyNone); AThread.Connection.OpenWriteBuffer; AThread.Connection.WriteStream(fStream); AThread.Connection.CloseWriteBuffer; FreeAndNil(fStream); end; AThread.Connection.Disconnect; AThread.Connection.Connected; fStream := TFileStream.Create(ExtractFilePath(Application.ExeName)+'Data\Client\'+sAction+'.ini',fmOpenRead + fmShareDenyNone); // fstream.Position:=0; AThread.Connection.OpenWriteBuffer; AThread.Connection.WriteStream(fStream); AThread.Connection.CloseWriteBuffer; FreeAndNil(fStream); end; Вот код клиента: Код:
try with IdTCPClient do begin if connected then DisConnect; Host := edit2.text; Port := StrToInt(edit3.text); Connect; WriteLn('NAME'+','+edit1.Text+','+Tip); w:=strtoint(readln); for q:=1 to w do begin e:=0; s:=readln; for w:=1 to length(s) do if copy(s,w,1)='\' then e:=w; s:=copy(s,e+1,100); // showmessage(s); if FileExists(ExtractFileDir(ParamStr(0)) + '\Data\Tests\' + s) then DeleteFile(ExtractFileDir(ParamStr(0)) + '\Data\Tests\' + s); ftmpStream := TFileStream.Create(ExtractFileDir(ParamStr(0)) + '\Data\Tests\' + s,fmCreate); while connected do ReadStream(fTmpStream,-1,true); FreeAndNil(fTmpStream); end; if FileExists(ExtractFileDir(ParamStr(0)) + '\Data\Tests\'+edit1.Text+'.ini') then DeleteFile(ExtractFileDir(ParamStr(0)) + '\Data\Tests\' +edit1.Text+'.ini'); ftmpStream := TFileStream.Create(ExtractFileDir(ParamStr(0)) + '\Data\Tests\' + edit1.Text+'.ini',fmCreate); while connected do ReadStream(fTmpStream,-1,true); FreeAndNil(fTmpStream); end; Button1.Enabled:=true; Disconnect; end; except on E : Exception do ShowMessage(E.Message); |