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

Вниз

Pchar и забиение на блоки   Найти похожие ветки 

 
Daiwer   (2005-11-12 19:19) [0]

Есть некоторые данные на которые указывает pchar. Необходимо эти данные разбить на блоки по 4 байта. Преобразование в string не подойдет. Есть какие нибудь мысли?  Заранее благодарен.


 
Anton_K ©   (2005-11-12 20:07) [1]

А в чем проблемма-то?


 
Sergey Masloff   (2005-11-12 20:22) [2]

PChar это указатель. Какая фиг разница на чего он указывает? Двигай указатель шагом N где N хоть 1 хоть 4 хоть сколько байт все вот тебе и разбивка


 
Daiwer   (2005-11-13 15:15) [3]

так, а как двигать то??


 
Anton_K ©   (2005-11-13 15:38) [4]


var P:PChar;
...
P:=P+4;  // двигаем указатель на 4 байта вперед
P:=P-10; // двигаем указатель на 10 байт назад


 
Zeqfreed ©   (2005-11-13 15:50) [5]

Daiwer   (13.11.05 15:15) [3]

type
 TCutCallback = function(block : Cardinal) : Boolean;

...

function CutData(const p : PChar; proc : TCutCallback) : Integer;
var
i : Integer;
block : Cardinal;
begin
i := 0;
if (StrLen(p) >= 4) then repeat
 Move(Pointer(Cardinal(p) + i*4)^, block, 4);
 Inc(i);
until not proc(block) or (((StrLen(p) div 4) - i) < i);

Result := i;
end;

function Callback(block : Cardinal) : Boolean;
begin
Form1.Memo1.Lines.Add(IntToHex(block, 2));
Result := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add("String cut into " + IntToStr(CutData(#13#10#14#15#16#32#44#66#88#99, Callback)) + " 4Bytes-pieces");
end;


Примерно так :)



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

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

Наверх




Память: 0.47 MB
Время: 0.045 c
2-1132312364
Timon777
2005-11-18 14:12
2005.12.04
ShellExecute и фокус нового окна


5-1115830434
Cloude
2005-05-11 20:53
2005.12.04
Как использовать TList


3-1129634132
Juice
2005-10-18 15:15
2005.12.04
dbExpress - хорошо или плохо ?


2-1131719759
Still Swamp
2005-11-11 17:35
2005.12.04
Как создать N-мерный массив в рантайме.


5-1115304792
greyserg
2005-05-05 18:53
2005.12.04
Как в конструкторе прочитать свойство сохраненной в dfm компонент