Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2011.09.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
2-1306601421
ddd329
2011-05-28 20:50
2011.09.11
Загрузка файла из blob-поля


15-1306245338
Медвежонок Пятачок
2011-05-24 17:55
2011.09.11
Навигатор автомобильный + Win CE + разработка


2-1306605316
max25
2011-05-28 21:55
2011.09.11
Изображения


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


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





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский