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

Вниз

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

Наверх





Память: 0.56 MB
Время: 0.014 c
15-1166716954
kaZaNoVa
2006-12-21 19:02
2007.01.14
Всем Привет)


2-1166740295
XfroSt
2006-12-22 01:31
2007.01.14
Передача значения в поток thread


15-1166473825
bara-igor
2006-12-18 23:30
2007.01.14
Вставка других языков программирования в Delphi


2-1166701524
Vovan #2
2006-12-21 14:45
2007.01.14
Вместо локальной функции как параметра


6-1155788873
vodvorezlaya
2006-08-17 08:27
2007.01.14
Как идентифицировать своё соединение с сервером





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский