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

Вниз

TClientSocket & TProgressBar   Найти похожие ветки 

 
atas-sheriff ©   (2006-12-20 18:10) [0]

Здраствуйте!
Я отправляю файл клиентом на сервер:

fs:=TFileStream.Create(FileEdit.Text,fmOpenread);
fs.Position:=0;
ClientSocket1.Socket.SendText("Size:"+IntToStr(fs.Size)+#0+"Name:"+ExtractFileName(OpenDialog.FileName)+#0);
ClientSocket1.Socket.SendStream(fs);

Как сюда "приделать" ProgressBar? Надо ж знать сколько осталось ждать


 
Chuk & Gek ©   (2006-12-20 20:58) [1]

Слушай а как ты отправляешь файл??? ищу не могу найти... Приведи код плиз!!!


 
Джо ©   (2006-12-20 21:03) [2]

> [1] Chuk & Gek ©   (20.12.06 20:58)
> Слушай а как ты отправляешь файл??? ищу не могу найти...
> Приведи код плиз!!!

Ггг. А в [0] не код, по-твоему? :D


 
Chuk & Gek ©   (2006-12-20 21:05) [3]

Извените, но это всё???
я думал там сложно...


 
Chuk & Gek ©   (2006-12-20 21:06) [4]

А в сервере что надо написать??? если, конечно, Вас не затруднит...:)


 
atas-sheriff ©   (2006-12-20 21:50) [5]

Вот здесь пример http://www.atas-sheriff.by.ru/downloads/transfer.rar А как нащот TProgressBar ктота чтота знает???


 
Chuk & Gek ©   (2006-12-20 21:54) [6]

Спасибо большое! буду изучать...


 
Chuk & Gek ©   (2006-12-20 21:55) [7]

А на счёт прогрессбара- сколько байтов отправил от общего размера считай...


 
atas-sheriff ©   (2006-12-20 21:57) [8]

Как туда приштопать ProgressBar??? Ну сказите ктота plizzzzzz


 
Chuk & Gek ©   (2006-12-20 21:57) [9]

Неее.... со "спасибо поторопился"...
Он не загружается, а открывает какую то страницу вот цитата:

Rar!Ћ•
[4Ё’ыЙ}фЁТr•"H%ґJ•/ъYXЫъ>ј¤ЪyaS‘€И"‚ncU~Qї№вЋ<Ды чcнRJ±Ґ‘j}nЕґЬWЇ)F(HіБ А|)[і†B}њcSIѓ-
IЈВ;ы‘Џ*«аqЬёщ]`п9б;=ѕГЮ1ыХЬЎuigo«mв©z¤r#…*†yпєьЉ}Ф„‘ЏкxkYЙx›°ЬВn°Є@n °&ЛхЋъЪvа=;џg{®
’хєN·eэќ‰ЅnЗЏI в“ј„†ф"с&#65533;*"wrъ<d,Т UЕрvѕ»|g Г9x0э+‹D$ЗҐ№Д хЪЧџ яНbќ|7›IЄГ_KЄ‡ЕrЅKйѕ,Г‹R’тЭТ4;Џ9•qЯKЩЉM4{Аы°w(gљл0ZШSuQ¬#¬[їeЧH§U¤cAЛЂ ЦB=шYk
щ;Ќ9ЦјС„7ў7Ћ№kЅ{ПЊµ-і+ЅWЎ=сђнмЖ7нБЯ7Ю&cwMvCЧчФ ъИkYРlpW:ШmfиЁ{ј@Ђ\TїИE­
0—,В›ё©іT3ла}Ђ-ЂGЉM;ЃЙ;Дј=Sѕ0я›/€РOHк`зШ0‘ТfYАnтUЇMЈэ”|zє[Х
ѕ°:€™V‡ЭnУtVЅpНHXюZ›мЄј&‚wЄџ`чB§яј·x4j9eP„·эcцЃњ{еЅSЊљё0"MpєЙЮхњ{еЅWРмШjРЕ! ТТtґ ›а‹ь…№хЫµu†GgЛ%#+†Ж—
ЁevЗЭbhд%SЭХш Ёђ<sЯИcгї/тҐ~Cу;y)UєQЅNhџ#Аґћ\
›ЎЪ&;ѓђDrhуџK№|Б‚оєgС
¬_е)@ҐWs%¬GvЙб
эyCЦ
=„–]Ђ;|^Ї,ршЅTЪу§УЗщR«}Ю¦~+њџ4ИйгчwaЁ:ҐёеІ)k
лnЇЛЛѕв5м…WЙ"їѕФXcгу¦Ѓ№°ьфыПm†ыkЖсp‰–°h›%[3k…¶S1Ґ1Птw
ґтъU»do›T[ЧЄ-л~Е(ТЋqЅGЁнF^ЈНРєEђ #€X¤v;еqnЎ…·е6|{Ѕ
чGiЫVМ^ф¦mи|F>–#|йм)%7°Фxу vVщИЬ
·ўY$уS"<¬іьT{зї(ёДOЌѕMЌEлјШЌРчY’ўв(ЊOиr“TэёСp
ЌH№eі‡ЃўFШЦTј°ђ*
•>рхА3ф—втвсwЁмЮ
х‘y‘6ЭСЗYЏи2п5Uf?C’Kъ5V¬{xN
M™%М]пЪЇсс<3CЄъ”х я3Уя©бєЖr3

Пожалуйста выложите на www.slil.ru


 
atas-sheriff ©   (2006-12-20 21:58) [10]

Хе) Как??? Я немогу найти "сколько отправил")


 
Chuk &amp; Gek ©   (2006-12-20 22:00) [11]

ну ты какнибудь в цикле..


 
atas-sheriff ©   (2006-12-20 22:02) [12]

Загрузка файла.

Вы запросили файл с сайта www.atas-sheriff.by.ru, размещённого на бесплатном хостинге BY.RU. Чтобы скачать запрошенный файл, пройдите по ссылке:
/downloads/transfer.rar Здесь нажимай ПРАВУЮ КНОПКУ МЫШи и "Сохранить обект как..."

Администрация BY.RU предупреждает вас, что испольняемые файлы, загруженные из непроверенных мест могут содержать вирусы и нанести вред вашему компьютеру. Будьте внимательны и осторожны.
Что ещё можно сделать?
Вы можете отказаться от загрузки и вернуться на предыдущую страницу.
Каталог и поиск помогут быстро получить нужную информацию: [AD]


 
Chuk &amp; Gek ©   (2006-12-20 22:04) [13]

Всё спасибо скачал Opera рулит!


 
atas-sheriff ©   (2006-12-20 22:07) [14]

Ти там тоже подумай как ProgressBar приштопать)


 
Джо ©   (2006-12-20 23:04) [15]

> [9] Chuk & Gek ©   (20.12.06 21:57)
> Неее.... со "спасибо поторопился"...
> Он не загружается, а открывает какую то страницу вот цитата:

Правой кнопкой «Сохранить объект как...». Это архив rar.


 
Джо ©   (2006-12-20 23:05) [16]

Правой кнопкой «Сохранить объект как...». Это архив rar.


 
Сергей М. ©   (2006-12-21 08:16) [17]


> Как сюда "приделать" ProgressBar?


К SendStream() - легко. Делаешь своего наследника TFileStream и перекрываешь в нем вирт.метод Read


 
atas-sheriff ©   (2006-12-21 11:15) [18]

А можно кодом? А то я непонял:(


 
Сергей М. ©   (2006-12-21 11:36) [19]


> я непонял


Не понял конкретно что ?


 
atas-sheriff ©   (2006-12-21 11:40) [20]

Делаешь своего наследника TFileStream - 1 перекрываешь в нем вирт.метод Read - 2


 
Сергей М. ©   (2006-12-21 11:48) [21]

type
 TProgressFileStream = class(TFilestream)
 protected
   procedure Read(var Buffer; Count: Longint): Longint; override;
 end;

...

procedure TProgressFileStream.Read;
begin
 Result := inherited Read(Buffer, Count);
 MyProgressBar.StepBy(Result);
end;

...

fs:=TProgressFileStream.Create(FileEdit.Text,fmOpenread);
try
..
 MyProgressBar.Min := 0;
 MyProgressBar.Max := fs.Size;
 MyProgressBar.Position := 0;
 ClientSocket1.Socket.SendStream(fs);
except
 fs.Free;
 reise;
end;


 
atas-sheriff ©   (2006-12-21 11:56) [22]

ООООООООооо)). Спасибо!!!


 
atas-sheriff ©   (2006-12-21 12:47) [23]

Сергей а ти уверен что это работает???


 
Сергей М. ©   (2006-12-21 12:50) [24]


> а ти уверен что это работает?


При условии, что ClientType = ctNonBlocking - куда оно денется)


 
atas-sheriff ©   (2006-12-21 12:54) [25]

Ну я вопше чтота делаю но невиходит. Немогу понять почему. Ну вопшем код:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ScktComp, StdCtrls, ComCtrls, Buttons, XPman;

type
 TForm1 = class(TForm)
   FileEdit: TEdit;
   Button1: TButton;
   Button2: TButton;
   ClientSocket1: TClientSocket;
   OpenDialog: TOpenDialog;
   Edit2: TEdit;
   Button3: TButton;
   Sizelabel: TLabel;
   ProgressBar1: TProgressBar;
   procedure Button2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure ClientSocket1Connect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocket1Disconnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 fs :TFileStream;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
 if ClientSocket1.Active=true then
 begin
   if not FileExists(FileEdit.Text) then
     Exit;
   fs:=TFileStream.Create(FileEdit.Text,fmOpenread);
   fs.Position:=0;
   ClientSocket1.Socket.SendText("Size:"+IntToStr(fs.Size)+#0+"Name:"+ExtractFileName(OpenDialog.FileName)+#0);
   ClientSocket1.Socket.SendStream(fs);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if OpenDialog.Execute then
 begin
   FileEdit.Text:=OpenDialog.FileName;
   FS:=TFileStream.Create(OPenDialog.FileName,fmOpenRead);
   SizeLabel.Caption:=IntToStr(Round(FS.Size/1024))+" КБ";
   FS.Free;
 end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 Button3.Tag:=Button3.Tag + 1;
 if not odd(Button3.Tag) then
   begin
     ClientSocket1.Active:=false;
     Exit;
   end;
 ClientSocket1.Host:=Edit2.Text;
 ClientSocket1.Active:=true;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Button3.Caption := "Disconnect";
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Button3.Caption := "Connect";
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var
s:string;
begin
 s:=Socket.ReceiveText;
 if s="recived" then
   MessageBox(0,"File recived!","Information",mb_iconinformation+mb_ok);
end;

end.


Напиши пожалуйста куда это прилипить)) НУ PLIZZZZZ)


 
Сергей М. ©   (2006-12-21 12:59) [26]


> чтота делаю но невиходит


> Ну вопшем код


Я не вижу в этом коде никаких попыток выполнить мои рекомендации.

Показывай, как ты "что-то делал" и что конкретно при этом "невиходит"...

Будем разбирать пошагово твои действия ...


 
atas-sheriff ©   (2006-12-21 13:08) [27]

OK.
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ScktComp, StdCtrls, ComCtrls, Buttons, XPman;

type
 TForm1 = class(TForm)
   FileEdit: TEdit;
   Button1: TButton;
   Button2: TButton;
   ClientSocket1: TClientSocket;
   OpenDialog: TOpenDialog;
   Edit2: TEdit;
   Button3: TButton;
   Sizelabel: TLabel;
   ProgressBar1: TProgressBar;
   procedure Button2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure ClientSocket1Connect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocket1Disconnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
// А вот это куда)
type
TProgressFileStream = class(TFilestream)
protected
  procedure Read(var Buffer; Count: Longint): Longint; override;// Вот здесь ошибка: "Procedure cannot have a result type"
end;

var
 Form1: TForm1;
 fs :TFileStream;

implementation

{$R *.dfm}
// И это
procedure TProgressFileStream.Read;
begin
Result := inherited Read(Buffer, Count);
Form1.ProgressBar1.StepBy(Result);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if ClientSocket1.Active=true then
 begin
   if not FileExists(FileEdit.Text) then
     Exit;
   fs:=TFileStream.Create(FileEdit.Text,fmOpenread);
   fs.Position:=0;
   ClientSocket1.Socket.SendText("Size:"+IntToStr(fs.Size)+#0+"Name:"+ExtractFileName(OpenDialog.FileName)+#0);
   ClientSocket1.Socket.SendStream(fs);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if OpenDialog.Execute then
 begin
   FileEdit.Text:=OpenDialog.FileName;
   FS:=TFileStream.Create(OPenDialog.FileName,fmOpenRead);
   ProgressBar1.Min := 0;         //Вот
   ProgressBar1.Max := fs.Size;//это
   ProgressBar1.Position := 0;  //сюда. Здесь вопросов НЕТ)
   SizeLabel.Caption:=IntToStr(Round(FS.Size/1024))+" &#202;&#193;";
   FS.Free;
 end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 Button3.Tag:=Button3.Tag + 1;
 if not odd(Button3.Tag) then
   begin
     ClientSocket1.Active:=false;
     Exit;
   end;
 ClientSocket1.Host:=Edit2.Text;
 ClientSocket1.Active:=true;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Button3.Caption := "Disconnect";
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Button3.Caption := "Connect";
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var
s:string;
begin
 s:=Socket.ReceiveText;
 if s="recived" then
   MessageBox(0,"File recived!","Information",mb_iconinformation+mb_ok);
end;

end.


Да я знаю что я Ламер))


 
Anatoly Podgoretsky ©   (2006-12-21 13:14) [28]

> atas-sheriff  (21.12.2006 13:08:27)  [27]

Разобраться, что такое процедура и что такое функция.


 
Сергей М. ©   (2006-12-21 13:18) [29]


> // А вот это куда)


Никуда. Оно на своем месте.


> // И это


И это тоже.


>    fs:=TFileStream.Create(FileEdit.Text,fmOpenread);


Найди хотя бы одно отличие от моего кода

fs:=TProgressFileStream.Create(FileEdit.Text,fmOpenread);

Понимаю, нахождение и осознание различий - задача тяжелая, но за тебя ее никто не решит)


 
atas-sheriff ©   (2006-12-21 13:22) [30]

а про ошибку??
TProgressFileStream = class(TFilestream)
protected
 procedure Read(var Buffer; Count: Longint): Longint; override;// Вот здесь ошибка: "Procedure cannot have a result type"
end;


 
Anatoly Podgoretsky ©   (2006-12-21 13:23) [31]

> atas-sheriff  (21.12.2006 13:22:30)  [30]

Еще раз надо написать?


 
atas-sheriff ©   (2006-12-21 13:25) [32]

Но Сергей мне написал в [21]


 
atas-sheriff ©   (2006-12-21 13:34) [33]

Кароче)) Я всьо понял. Всьо работает. И очень БОЛЬШОЕ БОЛЬШОЕ СПАСИБО Сергею и Анатолию :)


 
Сергей М. ©   (2006-12-21 13:34) [34]


> Но Сергей мне написал в [21]


TProgressFileStream = class(TFilestream)
protected
 function Read(var Buffer; Count: Longint): Longint; override;
end;

Неужели так сложно дотумкать самому ?)


 
Anatoly Podgoretsky ©   (2006-12-21 13:35) [35]

> atas-sheriff  (21.12.2006 13:25:32)  [32]

Мало ли что он тебе написал, ты в учебник погляди, что такое функция, а что такое процедура.


 
atas-sheriff ©   (2006-12-21 13:36) [36]

ДА ПОНЯЛ Я))) И нашо ты писал procedure???


 
Сергей М. ©   (2006-12-21 13:37) [37]


> Всьо работает


Как только изменишь ClientType с ctNonBlocking на ctBlocking, это "кароче все" работать перестанет, имей ввиду)

Любая карета, полученная нахаляву, рано или поздно станет тыквой)


 
Anatoly Podgoretsky ©   (2006-12-21 13:38) [38]

> atas-sheriff  (21.12.2006 13:36:36)  [36]

Ответь, почему ты написал procedure :-)


 
Сергей М. ©   (2006-12-21 13:40) [39]


> нашо ты писал procedure?


Все претензии - к Кофи Аннену)

Код был дан тебе в кач-ве иллюстрации концепции решения !
А не для слепого передирания и последующего хныка, мол, "не пашет" ...

И голова, понимаешь ли, дана программеру отнюдь не для жевания)


 
atas-sheriff ©   (2006-12-21 13:43) [40]

Ок. Я тебе слепо верил))). А и ёщо какая разница ctNonBlocking и ctBlocking



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

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

Наверх




Память: 0.57 MB
Время: 0.039 c
2-1166627427
atas-sheriff
2006-12-20 18:10
2007.01.14
TClientSocket &amp; TProgressBar


3-1161691807
zdm
2006-10-24 16:10
2007.01.14
api for propath


15-1166961931
Ксардас
2006-12-24 15:05
2007.01.14
Есть ли теорема, подобная теореме Виета для корней кв. уравнения,


2-1166615109
smaller
2006-12-20 14:45
2007.01.14
Как поймать щелчок мыши по границе формы?


15-1166556540
PHPDeveloper
2006-12-19 22:29
2007.01.14
Indy