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

Вниз

Пересылка записи(тип record) через Сокет.   Найти похожие ветки 

 
alexd1   (2003-06-04 20:48) [0]

Вот вобщем то и вопрос. Как это организовать и по красивее...?


 
Digitman   (2003-06-05 08:26) [1]

зависит от типа полей записи и от режима работы гнезда (блок., неблок.)


 
AlexDBases   (2003-06-05 09:31) [2]

2digitman режим не блок.......запись занимает 240 байт.....есть интежер остальные стринг фиус длинны ...


 
Digitman   (2003-06-05 09:35) [3]


> AlexDBases


приведи точную декларацию структуры


 
AlexDBases   (2003-06-05 09:44) [4]

type
UserInfo = record
ID: integer;
UserName: string[20];
FN: string[40];
LN: string[40];
MN: string[40];
Email: string[20];
Prof: string[20];
end;


 
alexdbases   (2003-06-05 09:54) [5]

я конечно понимаю что можно зарядит все это в буфер а на клиенте принять ......но как это по красивее.....=)..


 
Polevi   (2003-06-05 10:06) [6]

type
PUserInfo=^TUserInfo

var
buffer:Pointer;
ui:PUserInfo;
begin
GetMem(Buffer,sizeof(TUserInfo));
Socket.ReceiveBuf(Buffer^,sizeof(TUserInfo));
ui:=PUserInfo(buffer);

отправка аналогично


 
alexdbases   (2003-06-05 10:14) [7]

а нельза на прямую
type
PUserInfo=^TUserInfo

var
///buffer:Pointer;
ui:PUserInfo;
begin
GetMem(Buffer,sizeof(TUserInfo));
Socket.ReceiveBuf(ui^,sizeof(TUserInfo));
// ui:=PUserInfo(buffer);

нет я понимаю....пробовал уже .....нельзя ....вот причина не ясна...четко....


 
alexdbases   (2003-06-05 10:23) [8]

to Polevi Попробовал твою пересылку......вырубило и сервер и клиента ....не выводя ни каких ошибок.....просто слетели и всё =)


 
Digitman   (2003-06-05 10:39) [9]

1. TUserInfo = packed record !!!!

2.

type

TMyForm = class(TForm)
...
ClientSocket1: TClientSocket;
...
private
ms: TMyMemoryStream;
procedure DoOnStreamDestroyed(Sender: TObject);
...
end;

TMyMemoryStream = class(TMemoryStream)
private
FOnDestroy: TNotifyEvent;
public
constructor Create(OnDestroy: TNotifyEvent);
destructor Destroy; override;
end;

...

implementation

var
UserInfo : TUserInfo;
...

{ TMyForm }

procedure TMyForm.DoOnStreamDestroyed(Sender: TObject);
begin
ms := nil;
end;

...

constructor TMyMemoryStream.Create(OnDestroy: TNotifyEvent);
begin
inherited;
FOnDestroy := OnDestroy;
end;

destructor TMyMemoryStream.Destroy;
begin
if Assigned(FOnDestroy) then
FOnDestroy(Self);
inherited;
end;

...

{ TMyForm }

procedure TMyForm.ClientSocket1Write(Sender: TObject; Socket: TCustomWinSocket);
begin
Socket.SendStream(ms);
end;

procedure TMyForm.Button1Click(Sender: TObject);
var
CurPos: Integer;
begin
if not Assigned(ms) then
ms := TMyMemoryStream.Create(DoOnStreamDestroyed);
try
with ms do
begin
CurPos := Position;
Position := Size;
Write(UserInfo, SizeOf(UserInfo));
Position := CurPos;
end;
ClientSocket1.Socket.SendStream(ms);
except
FreeAndNil(ms);
raise;
end;
end;


 
alexdbases   (2003-06-05 10:40) [10]

Все спасибо разоврался......все нормально.....
Я имена смешал......
вместо Buffer или какого нить другого имени выбрал Buf.....
Оказалось это уже зарезервированное имя....


 
alexdbases   (2003-06-05 10:42) [11]

>Digitman спаисбо оргомное =)



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

Форум: "Сети";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
4-33407
dataMaster
2003-06-09 12:06
2003.08.11
Изменения в Win.ini


14-33342
Zigs
2003-07-25 11:44
2003.08.11
Как просмотреть какие функции лежат в DLL?


14-33265
Soft
2003-07-23 16:59
2003.08.11
Компьютерные игры для взрослых


1-33153
IgorRu
2003-07-26 21:37
2003.08.11
Как сохранить Форму в файл и затем в работающем проекте восст....


14-33280
8UnG
2003-07-22 21:31
2003.08.11
Com-port!!!





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