Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.09.11;
Скачать: CL | DM;

Вниз

Проблемы с передачей файла от сервера клиенту и наоборот   Найти похожие ветки 

 
dron9999 ©   (2009-05-03 18:23) [0]

Привет ! всем прошу помочь разобраться с такой проблемой ! нашел пример для пересылки файла но почему то когда передаю файл клиенту то приходит не весь размер файла не хватает 200 -150 байт
Вот сам код ! .....

сервер...
-----------------------------------
procedure TForm1.SSClientRead(Sender: PObj; Socket: PCustomWinSocket);
var
  TInfo:PTrasnferInfo;
  p,r:Integer;
  Dta,f:string;
  Buffer:array [1..200] of Char;

begin
  Dta:=Socket.ReceiveText;
  if Socket.Data = nil then
  begin
     try
        New(TInfo);
        f:=Chr(13);
        p:=Pos(f,Dta);
        TInfo^.LocalFile:=Copy(Dta,1,p  -1);
        TInfo^.Action:=TTransferAction(Str2Int(Copy(Dta,p + 1,Length(Dta))));
        if TInfo^.Action = taDownload1 then
        begin
           AssignFile(TInfo^.BFile,TInfo^.LocalFile);
           FileMode:=ofReadOnly;
  {$i+ }   Reset(TInfo^.BFile);   {$i- }

        end
        else if TInfo^.Action = taUpload1 then
        begin
           AssignFile(TInfo^.TFile,TInfo^.LocalFile);
           ReWrite(TInfo^.TFile);
           CloseFile(TInfo^.TFile);
        end;

        Socket.Data:=TInfo;                      
        if TInfo^.Action = taDownload1 then
         Socket.SendText(Int2Str(FileSize(TInfo^.LocalFile)))
 else
  if TInfo^.Action = taUpload1 then
        Socket.SendText("C");
     except
        Socket.SendText("Can""t access file...");
        Exit;
     end;
  end
  else
  begin
      TInfo:=Socket.Data;
  if  TInfo^.Action = taDownload1 then
  begin
        p:=FilePos(TInfo^.BFile);
        BlockRead(TInfo^.BFile,Buffer,200,r);
        r:=FileSize(TInfo^.LocalFile);
        Dta:=string(Buffer);
  if (r - p) < 200 then
        Dta:=Copy(Dta,200,r - p);
        Socket.SendText(Dta);
  end
  else
  if TInfo^.Action = taUpload1 then
     begin
        Write(TInfo^.TFile,Dta);
        Socket.SendText("C");
        CloseFile(TInfo^.TFile);
    end;
     end;
       end;
------------------------------------------------
может чего не увидел !


 
Сергей М. ©   (2009-05-03 21:48) [1]

Что лично ты сделал для того чтобы "разобраться с проблемой" ?
Какие конкретно усилия и действия для понимания и отладки чужого кода ты предпринял ?


 
dron9999 ©   (2009-05-04 07:27) [2]

извиняюсь не правильно выложил код
Ошибка в Constant expression violates subrange bounds
begin
          AssignFile(TInfo^.BFile,TInfo^.LocalFile);
          FileMode:=ofOpenRead; <---------------- ошибка  
 {$i+ }   Reset(TInfo^.BFile);   {$i- }

думаю нужно указать в Constant
ну пример
const
ofOpenRead  = $????????;
буду искать спс !


 
dron9999 ©   (2009-05-04 09:12) [3]

Нет не получается в KOL.pas
есть вот это
//[OpenFile CONSTANTS]
const
 ofOpenRead          = {$IFDEF LIN} O_RDONLY {$ELSE} $80000000 {$ENDIF};
{* Use this flag (in combination with others) to open file for "read" only. }
то есть...
const
ofOpenRead          = $00000008 ;
--------------------------------
но при закачки
на клиент останавливается на 99% =( 12,5 МБ (13 194 481 байт) из 12,5 МБ (13 194 592 байт)
на сервер файл не закачивается  0 из 12,5 МБ (13 194 592 байт)


 
Сергей М. ©   (2009-05-04 09:42) [4]

см. [1]



Страницы: 1 вся ветка

Текущий архив: 2011.09.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.007 c
2-1306312189
kirat
2011-05-25 12:29
2011.09.11
TreeView Цветные строки


2-1306570483
Очень злой
2011-05-28 12:14
2011.09.11
Сделать нормальной ширину колонки в DBGRID


2-1306712358
And7
2011-05-30 03:39
2011.09.11
Skrolbar в Memo


6-1241442332
TN_TN
2009-05-04 17:05
2011.09.11
Delpi - связь через модем


2-1306057843
Criptonik
2011-05-22 13:50
2011.09.11
Вывод системных файлов