![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Indy tc clien [D7, WinXP]
Std © (2006-04-10 14:24:00)доброго времени
Вот отправляю файл с помощью этой компоненты:
type
TtransCom = record
FileName: String[255];
BufSize: Int64;
Buffer: array[0..16383] of byte;
end;
type
Tcomand = record
comand:string[255];
param1:string[255];
param2:string[255];
end;
procedure TForm1.Button1Click(Sender: TObject);//отправка файла
var
com:Tcomand;
transcom:TtransCom;
f:file;
numread:integer;
begin
AssignFile(f,'d:\card.doc');
FileMode:=fmOpenRead;
Reset(f);
IdTCPClient1.Connect(1000);
repeat
transcom.FileName:='card.doc';
BlockRead(f,transcom.Buffer,sizeof(transcom.Buffer),numread);
transcom.BufSize:=numread;
com.comand:='send';
com.param1:=inttostr(FileSize(f));
idTCPClient1.WriteBuffer(Com,SizeOf(Com));
idTCPClient1.WriteBuffer(transcom,SizeOf(TransCom));
until (numread=0);
CloseFile(f);
IdTCPClient1.Disconnect;
end;
procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);//получение файла
var
com:Tcomand;
transcom:TtransCom;
f:file;
begin
AThread.Connection.ReadBuffer(com,sizeof(com));
if com.comand='send' then
begin
AThread.Connection.ReadBuffer(transcom,sizeof(transcom));
AssignFile(f,'c:\'+transcom.FileName);
FileMode:=fmOpenReadWrite;
try
Reset(f);
except
Rewrite(f);
end;
Seek(f,filesize(f));
If FileSize(F)<>StrToInt(Com.Param1) then
begin
BlockWrite(F,TransCom.Buffer,TransCom.BufSize);
Application.ProcessMessages;
closefile(f);
end
else
closefile(f);
end;
end;
при выполнениее программы вибивает ошибку:
I/O error 998 вот здесь
BlockRead(f,transcom.Buffer,sizeof(transcom.Buffer),numread);
в чем проблема не пойму... все вроде правильно
оправлять и получать файл Strem'ом нежелательно, нада реализовать этот метод...
Сергей М. (2006-04-10 15:25:00) [1]
> може я через инди не правильно чето делаю
Ты с дерева упал, да ?
Вот ты скажи, ну какое отношение ф-ция BlockRead() имеет к Indy ?
Std (2006-04-10 15:13:00) [2]хз, може я через инди не правильно чето делаю
Сергей М. (2006-04-10 15:00:00) [3]И причем здесь Инди ?