Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Преобразовать PChar   Найти похожие ветки 

 
Роман   (2004-03-12 11:04) [0]

Всем привет!

Возникла следующая проблема:
Использую компонент TIPX для передачи двоичных данных по сети, для получения
данных используется событие:

procedure Tmf.IPX1ReceiveData(Sender: TObject; Buffer: PAnsiChar;
BufferLength: Integer; SockAddr: TSockAddrIPX; SockAddrLen: Integer);
type buffType =array [1..165000] of char;
var
 s : string;
 buff : ^buffType;
 ad : pointer;
begin
ad:=Buffer;
buff:=ad;
s:=copy(buff^, 5, BufferLength-4);
...

Насколько корректно я написал, дело в том, что отработав несколько раз
приложение падает с AV.
Рекомендованное Helpoм s:=string(Buffer) не проходит, т.к. копируются не все
данные (до #0).

Помогите люди добрые, кто чем может!


 
evvcom   (2004-03-12 11:09) [1]

А нафига двоичные данные копировать в строку? Используй Move-копирование в обычный двоичный буфер.


 
PVOzerski ©   (2004-03-12 11:17) [2]

>s:=copy(buff^, 5, BufferLength-4);

Только догадка: нет ли здесь неявного преобразования массива в строку? Я бы предпочел связку SetLength и Move. Если, конечно, я правильно понял задачу.

procedure Tmf.IPX1ReceiveData(Sender: TObject; Buffer: PAnsiChar;
BufferLength: Integer; SockAddr: TSockAddrIPX; SockAddrLen: Integer);
var
s : string;
l:cardinal;
begin
if BufferLength<5 then
 s:=""
else
 begin
  l:=BufferLength-4;
  SetLength(s,l);
  move(Buffer[4],s[1],l);
...


 
Роман   (2004-03-12 12:19) [3]

Господа, благодарю! Оператор "move" помог, проблема решена!

Хоть и писал ещё на TP, аднако  "move" не использовал никогда, удобно однако.



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

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.052 c
1-1078941592
Raids
2004-03-10 20:59
2004.04.04
QuickReport не правильно считает по группам


3-1077866970
Alex___________
2004-02-27 10:29
2004.04.04
Как передать в DLL , TpFIBDatabase. ?????


4-1074958399
Gibon
2004-01-24 18:33
2004.04.04
Как поставить хук мышы на чужую програму ?


6-1075409790
Ig
2004-01-29 23:56
2004.04.04
Имя компьютера


11-1059120388
Armaniak
2003-07-25 12:06
2004.04.04
Что за параметры требуются для выполнения Execute в KOLSLQuery