![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как обойтись без StrLCat ? [D6, Win95/98]
Fanny © (2005-08-22 11:04:00)procedure MyProc(a:string);
var
b:string;
begin
// надо переменной B присвоить сегмент переменной A (такой же длины как у B)
end;
можно ли вообще обойтись без "выдёргивания" процедуры из SysUtils ???
Fanny (2005-08-22 15:18:00) [1]всем спасибо
Игорь Шевченко (2005-08-22 13:06:00) [2]
> B := Copy(A,0,Length(A))
> должно работать ?
Строки вообще-то с первого символа начинаются, а не с нулевого.
jack128 (2005-08-22 13:02:00) [3]Fanny (22.08.05 12:13) [4]
а есть разница между Length(A) и SizeOf(A) ?
есть. А - суть указатель, размер его - 4 байта. Length(A) - это длина строки.
Fanny (2005-08-22 12:13:00) [4]то есть
B := Copy(A,0,Length(A))
должно работать ?
а есть разница между Length(A) и SizeOf(A) ?
Leonid Troyanovsky (2005-08-22 11:58:00) [5]
> Вжжжик (22.08.05 11:55) [2]
> CopyMemory(Pointer(B), P, 5 {длина сегмента});
Move.
--
Regards, LVT.
Вжжжик (2005-08-22 11:55:00) [6]почему не сделать
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:10:00) [7]
> Fanny (22.08.05 11:04)
> // надо переменной B присвоить сегмент переменной A (такой
> же длины как у B)
SetString? Copy? Move?
--
Regards, LVT.