Форум: "Сети";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
ВнизПередача данных из одной программы в другую Найти похожие ветки
← →
Akni (2002-05-26 14:39) [0]Уважаемые Мастера! Помогите, пожалуйста, как реализовать след. задачу: есть две программы на Delphi, установленные на разных комп. в локальной сети. Как сделать так, чтобы текст, набираемый в одной из этих программ в Edit"е, автоматически передавался другой программе?
← →
Ghost. (2002-05-26 15:01) [1]Поставь посылку на событие ченж..
← →
Akni (2002-05-26 20:37) [2]Спасибо, а поподробнее? Никогда раньше для сетей не писала
← →
Song (2002-05-26 23:14) [3]Передавайте по сокету код каждого нажатого символа, после принятия его сервером прибавляйте к Edit"у: With Edit1 Do Text:=Text+Chr(код);
Как запрограммировать обмен данными по сокетам, смотрите статьи на этом сайте.
← →
Kettle of delphi (2002-05-27 02:58) [4]А если по-нормальному сделать, то вот минимальный пример, который я написал для тебя, Akni:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, NMUDP;
type
TForm1 = class(TForm)
Edit1: TEdit;
Memo1: TMemo;
NMUDP1: TNMUDP;
procedure FormCreate(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure NMUDP1DataReceived(Sender: TComponent; NumberBytes: Integer;
FromIP: String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
NMUDP1.LocalPort := 1234; {порт локального компьютера}
NMUDP1.RemoteHost := "192.168.1.2"; {IP получателя}
NMUDP1.RemotePort := 1234; {порт удаленного приемника}
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var i: Integer; TempString: String; OutData: array [0..9999] of Char;
begin
if (Key = #13) and (Edit1.Text <> "") then begin
TempString := Edit1.Text + #0;
Edit1.Clear; {очищаем поле ввода}
for i := 0 to length(TempString) do OutData[i] := TempString[i+1];
NMUDP1.SendBuffer(OutData, length(TempString)); {текст послания}
end;
end;
procedure TForm1.NMUDP1DataReceived(Sender: TComponent;
NumberBytes: Integer; FromIP: String);
var i: Integer; TempString: String; InData: array [0..9999] of Char;
begin
NMUDP1.ReadBuffer(InData, NumberBytes);
for i := 0 to NumberBytes do TempString := TempString + InData[i];
Memo1.Lines.Add(TempString);
end;
end.
Здесь используется компонент TNMUDP, который не требует отдельного сервера. При передаче или приеме используется конструкция из массива типа Char и числа, указывающего количество букв в этом массиве (т.е. его длину). Поэтому, перед передачей, имеется код преобразования строки в массив символов:
for i := 0 to length(TempString) do OutData[i] := TempString[i+1];
Обратно, при приеме, имеется код преобразования принятого массива типа Char в строку:
for i := 0 to NumberBytes do TempString := TempString + InData[i];
← →
Akni (2002-05-28 23:26) [5]Kettle of delphi - Спасибо
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c