Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

OLE клиент-сервер – Массив байт

Delphi , Технологии , OLE

OLE клиент-сервер – Массив байт

Автор: Xavier Pacheco

unit CliMain;

interface

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

type
  TMainForm = class(TForm)
    Memo: TMemo;
    Panel1: TPanel;
    SetButton: TButton;
    GetButton: TButton;
    OpenButton: TButton;
    OpenDialog: TOpenDialog;
    procedure OpenButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SetButtonClick(Sender: TObject);
    procedure GetButtonClick(Sender: TObject);
  private
    FServer: IBinaryData;
  end;

var
  MainForm: TMainForm;

implementation

{$R *.DFM}

procedure TMainForm.FormCreate(Sender: TObject);
begin
  FServer := CoBinaryData.Create;
end;

procedure TMainForm.OpenButtonClick(Sender: TObject);
begin
  if OpenDialog.Execute then
    Memo.Lines.LoadFromFile(OpenDialog.FileName);
end;

procedure TMainForm.SetButtonClick(Sender: TObject);
var
  P: Pointer;
  L: Integer;
  V: OleVariant;
begin
  // Send memo data to server
  L := Length(Memo.Text);
  V := VarArrayCreate([0, L - 1], varByte);
  P := VarArrayLock(V);
  try
    Move(Memo.Text[1], P^, L);
  finally
    VarArrayUnlock(V);
  end;
  FServer.Data := V;
end;

procedure TMainForm.GetButtonClick(Sender: TObject);
var
  P: Pointer;
  L: Integer;
  S: string;
  V: OleVariant;
begin
  // Get server's memo data
  V := FServer.Data;
  L := VarArrayHighBound(V, 1) - VarArrayLowBound(V, 1) + 1;
  SetLength(S, L);
  P := VarArrayLock(V);
  try
    Move(P^, S[1], L);
  finally
    VarArrayUnlock(V);
  end;
  Memo.Text := S;
end;

end.
Скачать весь проект

Этот проект на языке Delphi демонстрирует клиент-серверное приложение с использованием технологии OLE (Object Linking and Embedding) и интерфейса IBinaryData. В проекте есть только одна форма, TMainForm, которая предоставляет несколько кнопок для взаимодействия с сервером:

  1. Открыть: Открывает диалоговое окно для загрузки текстового файла и отображает его содержимое в контроле Memo.
  2. Установить: Отправляет текстовые данные из Memo на сервер с помощью массива OLE-variant.
  3. Получить: Получает данные от сервера и обновляет текст Memo.

Вот подробное описание кода:

FormCreate(): Инициализирует переменную FServer экземпляром интерфейса IBinaryData, созданным с помощью CoBinaryData.Create.

OpenButtonClick(): Открывает диалоговое окно с помощью TOpenDialog и загружает выбранный файл в контрол Memo с помощью Memo. Lines.LoadFromFile.

SetButtonClick(): Отправляет текстовые данные из Memo на сервер, создавая массив OLE-variant, блокируя его, перемещая текстовые данные в массив, разблокируя массив и присваивая ему свойство Data сервера.

GetButtonClick(): Получает данные от сервера, доступ к свойству Data, которое предполагается быть массивом байтов. Код блокирует массив, перемещает данные в локальную строковую переменную, разблокируя массив и обновляет контрол Memo с полученными текстами.

Обратите внимание, что это код предполагает:

  • Серверная реализация предоставляет экземпляр IBinaryData с методами для отправки и приема данных.
  • Клиент и сервер запущены на одном компьютере или могут общаться через сеть с помощью механизма RPC (Remote Procedure Call) OLE.
  • Функции VarArrayCreate, VarArrayLock и VarArrayUnlock используются для работы с массивами OLE-variant, которые позволяют передавать массивы байтов между компонентами COM.

В целом, этот проект демонстрирует, как использовать OLE для создания простого клиент-серверного приложения в Delphi.

В статье рассматривается пример использования OLE клиент-сервер, демонстрируя как отправить и получать данные между клиентом и сервером.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OLE ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 14:42:04/0.0037879943847656/0