
Сообщение от
_Pavel_
Согласен по поводу первого обычный String он байтовый и все хорошо. Просто я подумал что ТС парсит сетевой пакет т.е. сейчас например ему нужно 5656 а потом придет 565656. Хотелость предложить более общее решение и надежное. Вдруг он захочет воспользоваться такой же технологией(указателем) и для других типов в будущем что приведет к известным последствиям.
например
кол-во заранее известно
Код:
var_input
index,size : word;
var_output
str : string(...);
overflow : bool;
------
overflow := size >= (sizeof(str) - 1);
size := min(size,sizeof(str) - 1);
sysmemcpy(adr(str),adr(buffer[index]),size);
sysmemset(adr(str) + size,0,1);
неизвестно
Код:
var_input
index : word;
var_output
str : string(...);
overflow : bool;
var
i : word; //без языков
p : pointer to array[0..65535] of byte;
-----
p := adr(str);
for i := 0 to sizeof(str) - 1 do
p^[i] := buffer[index + i];
overflow := false;
if p^[i] = 0 then exit; end_if
overflow := true;
end_for
Писал на слух. Возможны мелкие очепятки