Текущий архив: 2005.10.23;
Скачать: CL | DM;
ВнизКак обойтись без StrLCat ? Найти похожие ветки
← →
Fanny (2005-08-22 11:04) [0]procedure MyProc(a:string);
var
b:string;
begin
// надо переменной B присвоить сегмент переменной A (такой же длины как у B)
end;
можно ли вообще обойтись без "выдёргивания" процедуры из SysUtils ???
← →
Leonid Troyanovsky © (2005-08-22 11:10) [1]
> Fanny (22.08.05 11:04)
> // надо переменной B присвоить сегмент переменной A (такой
> же длины как у B)
SetString? Copy? Move?
--
Regards, LVT.
← →
Вжжжик (2005-08-22 11:55) [2]почему не сделать
B:=A; ?
а если сегмент, то
B:=Copy(A, 2, 5);
а если все-таки хочется через копирование памяти то:
var
P : Pointer;
// место под сегмент строки А выделяем в строке В
// раз сегмент "такой же длины" и строка В гарантированно
// имеет правильную длину, то ниче выделять не надо,
// эту строку можно пропустить
SetLength(B, {длина сегмента} 5);
// делаем отступ от начала строки А
P:=Pointer(DWORD(Pointer(A)) + 2 {начало сегмента в строке А});
CopyMemory(Pointer(B), P, 5 {длина сегмента});
← →
Leonid Troyanovsky © (2005-08-22 11:58) [3]
> Вжжжик (22.08.05 11:55) [2]
> CopyMemory(Pointer(B), P, 5 {длина сегмента});
Move.
--
Regards, LVT.
← →
Fanny (2005-08-22 12:13) [4]то есть
B := Copy(A,0,Length(A))
должно работать ?
а есть разница между Length(A) и SizeOf(A) ?
← →
jack128 © (2005-08-22 13:02) [5]Fanny (22.08.05 12:13) [4]
а есть разница между Length(A) и SizeOf(A) ?
есть. А - суть указатель, размер его - 4 байта. Length(A) - это длина строки.
← →
Игорь Шевченко © (2005-08-22 13:06) [6]
> B := Copy(A,0,Length(A))
> должно работать ?
Строки вообще-то с первого символа начинаются, а не с нулевого.
← →
Fanny (2005-08-22 15:18) [7]всем спасибо
Страницы: 1 вся ветка
Текущий архив: 2005.10.23;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.045 c