Главная страница
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.008 c
2-1306258246
Станислав
2011-05-24 21:30
2011.09.11
Сбалансированное бинарное дерево


2-1306312189
kirat
2011-05-25 12:29
2011.09.11
TreeView Цветные строки


4-1250528858
ivanoff
2009-08-17 21:07
2011.09.11
как наити нужный Edit в чужом приложении


2-1306313935
lewka
2011-05-25 12:58
2011.09.11
Тригонометрические функции


3-1263964618
Дмитрий С
2010-01-20 08:16
2011.09.11
Запрос последней связи