Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


Информационный Канал Subscribe.Ru

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 02.06.03 09:04

Обновился дайджест по FAQ. Скачать можно здесь
Вышел очередной дайджест форумов. Скачать можно здесь
Лучшее из нашего FAQ   |x|
Простой способ отправки файлов при помощи TClientSocket & TServerSocket

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ScktComp, ExtCtrls, StdCtrls;

type
 TForm1 = class(TForm)
   Image1: TImage;
   Image2: TImage;
   ClientSocket1: TClientSocket;
   ServerSocket1: TServerSocket;
   Button1: TButton;
   procedure Image1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure ClientSocket1Connect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ServerSocket1ClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
 private
   { Private decl! arations }
   Reciving: boolean;
   DataSize: integer;
   Data: TMemoryStream;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Image1Click(Sender: TObject);
begin
 // Это процедура для открытия сокета на ПРИЁМ (RECEIVING).
 // Button1.Click is this procedure as well.
 ClientSocket1.Active:= true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 // Открытие ОТПРАВЛЯЮЩЕГО (SENDING) сокета.
 ServerSocket1.Active:= true;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 // Посылаем команду для начала передачи файла.
&n! bsp;Socket.SendText('send');
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var
 s, sl: string;
begin
 s:= Socket.ReceiveText;
 // Если мы не в режиме приёма:
 if not Reciving then
 begin
   // Теперь нам необходимо получить длину потока данных.
   SetLength(sl, StrLen(PChar(s))+1); // +1 for the null terminator
   StrLCopy(@sl[1], PChar(s), Length(sl)-1);
   DataSize:= StrToInt(sl);
   Data:= TMemoryStream.Create;
   // Удаляем информацию о размере из данных.
   Delete(s, 1, Length(sl));
   Reciving:= true;
 end;
 // Сохраняем данные в файл, до тех пор, пока не получим все данные.
 try
   Data.Write(! s[1], length(s));
   if Data.Size = DataSize then
   begin
     Data.Position:= 0;
     Image2.Picture.Bitmap.LoadFromStream(Data);
     Data.Free;
     Reciving:= false;
     Socket.Close;
   end;
 except
   Data.Free;
 end;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
var
 ms: TMemoryStream;
begin
 // Клиент получает команду на передачу файла.
 if Socket.ReceiveText = 'send' then
 begin
   ms:= TMemoryStream.Create;
   try
     // Получаем данные на передачу.
     Image1.Picture.Bitmap.SaveToStream(ms);
  &n! bsp;  ms.Position:= 0;
     // Добавляем длину данных, чтобы клиент знал, сколько данных будет передано
     // Добавляем #0 , чтобы можно было определить, где заканчивается информация о размере.
     Socket.SendText(IntToStr(ms.Size) + #0);
     // Посылаем его.
     Socket.SendStream(ms);
   except
     // Итак, осталось освободить поток, если что-то не так.
     ms.Free;
   end;
 end;
end;

end.

Автор М.К.

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
  • Cнова о DBF без BDE
    Этот вопрос обсуждался не раз но просматривая архивы форума я так и не нашел для себя оптимального решения Итак, ...
  • Как выстроить по русскому алфивиту содержимое базы данных?
    Как выстроить по русскому алфивиту содержимое базы данных? С sql не получилось, сортирует только по английскому, менял ...
  • EDBEngineError
    Сделал консольное приложение, кот. формирует вэб страницу. Хочу выводить на ней базу из SQL Server 2000. База настроена ...
  • OpenPictureDialog ? :)
    Поблема в следующем... Если пользую стандартный OpenPictureDialog то падает программа... Если по нему (...
  • Как скрыть прогу?
    Вот пишу одну программу под Win XP. И необходимо её скрыть, чтобы нен светилась в панели задач и в списке задач.
  • шедулер
    Люди, кто-то нить писал примитивный шедулер? Собственно я реализовываю просто на таймере, который, с периодом dt ...
  • Использование DLL созданной в D7 для D5
    DLL скомпилирована в D7 с использованием в параметре эспортируемой процедуры делфянского типа, например procedure test(...
У нас большой выбор статей   |x|
DirectX (Игровой SDK) Часть 1-2
Часть 1 (Модель компонентных объектов (СОМ) ,DirectDraw,
Объект IDirectDraw, Пример DDDemo1)
Часть 2 (Коды возврата DirectDraw и исключения Delphi, Переключение
на полноэкранный режим, Пример DDDemo2, Добавление обработчика
исключений приложения)
Новинки книжного рынка   |x|
Экстремальное программирование
Эта книга об экстремальном программировании. Экстремальное программирование, часто обозначаемое аббревиатурой «XP» — это упрощенная методика организации производства для небольших и средних по размеру команд разработчиков, занимающихся разработкой программного продукта в условиях неясных или быстро меняющихся требований. Данная книга предназначена для того, чтобы помочь вам определить, оправдано применение XP в вашей ситуации или нет.
Автор: Kent Beck
Другие сайты о DELPHI   |x|
Город Delphi
Популярный, мощный сайт для программистов на Delphi.

» Оценка сайта: 4
Опрос населения :)
Новый журнал для программистов "RSDN Magazine". Согласны ли вы его покупать ежемесячно?
»»» Да
»»» Нет
Для души

Хокку дня
Гейши пошли постирать кимоно
Тут-то их всех и накрыло
Мощной волною цунами...

Афоризмы
Глупо ломиться в открытую дверь, когда рядом полно закрытых.

Фраза дня
Все мы аморально устойчивы.

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В городе Глендейл в Аризоне (США) запрещается водить машину задом.
В городе Глоуб в Аризоне (США) нельзя играть на улицах с индейцами в карты.

И на закуску коротенький анекдот
За прошедшие сутки в городе Н зафиксировано: 1 пожар, одно ДТП, одно ограбление, одно изнасилование. Пострадавший находится сейчас в городской травматологической больнице.

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=61


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (delphi@mastak.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное